China Open source community
Õ¾ÄÚµ¼º½:

 
 
 
µ±Ç°Î»ÖÃ: Ê×Ò³ >> Ó¦ÓÃÈí¼þ >> ÍøÂçÏà¹Ø >> ApacheÖеĹҹ³ÆÊÎö(3)
 

ApacheÖеĹҹ³ÆÊÎö(3)

×÷Õߣºflydish1234 at sina.com.cn      À´Ô´£º     ·¢±íʱ¼ä£º2006-03-06     ä¯ÀÀ´ÎÊý£º      ×ֺţº´ó  ÖР Ð¡

öº¯Êý¶¼²»ÔÊÐíÖ±½Óµ÷Óã¬ËüÃÇ×÷ΪApacheµÄÄÚ²¿º¯Êý¶ø´æÔÚ£¬¶ÔÍâÌṩµÄÔòÊǺêAPR_REGISTER_OPTIONAL_FNºÍAPR_RETRIEVE_OPTIONAL_FN¡£

¶ÔÓÚoptional_fun¿ÉÑ¡º¯Êý£¬×¢²áÓï¾äÈçÏ£º
APR_REGISTER_OPTIONAL_FN(optional_fun);
µ±Óû§ÏëʹÓÿÉÑ¡º¯ÊýµÄʱºò£¬Ê×ÏȱØÐë»ñµÃÆäº¯ÊýÖ¸Õ룬Ó÷¨ÈçÏ£º
APR_OPTIONAL_FN_TYPE(some_fn) *pfn;
pfn=APR_RETRIEVE_OPTIONAL_FN(some_fn);
 
 
5.5.8.3.¿ÉÑ¡º¯ÊýµÄʹÓÃ
 
5.5.9ÖÇÄܹҹ³
5.5.10¹Ò¹³¹¤×÷»úÖÆ
ÔÚÇ°ÃæµÄ²¿·Ö£¬ÎÒÃǶԹҹ³½øÐÐÁËÏêϸµÄ·ÖÎö£¬µ«ÊÇ»¹È±·¦Ò»¸öÕûÌåÉϵĸÅÄî¡£´ÓÕûÌåÉÏÀ´¿´¹Ò¹³µÄ¹¤×÷»úÖÆ¿ÉÒÔÓÃÏÂͼÀ´ÃèÊö£º

Ò»¸öÄ£¿é´Ó¹Ò¹³µÄ½Ç¶ÈÀ´¿´£¬Æä×îÖØÒªµÄÎÞ·ÇÊÇÁ½¸ö·½Ã棺¹Ò¹³×¢²áº¯ÊýºÍ¹Ò¹³´¦Àíº¯Êý¡£¹Ò¹³×¢²áº¯Êýͨ³£ÊÇÄ£¿é½á¹¹ÖеÄregister_hooksº¯ÊýÖ¸Õ룬¸Ãº¯ÊýÖ¸Õ뽫µ÷ÓÃʵ¼ÊµÄ¹Ò¹³×¢²áº¯Êý½øÐйҹ³×¢²á¡£¹Ò¹³×¢²áµÄ¹ý³ÌºÜ¼òµ¥£¬Í¨¹ýºêap_hook_xxxʵÏÖ¡£±ÈÈçÉÏͼÖÐÉùÃ÷ÁËÁ½¸ö¹Ò¹³abcºÍxyz¡£
Óë´Ëͬʱ£¬Ä£¿éÖÐÒ²½«ÉùÃ÷Óë¹Ò¹³¶ÔÓ¦µÄ¹Ò¹³º¯Êý£¬¸Ã¹Ò¹³±»´¥·¢µÄʱºò£¬¸Ãº¯Êý½«±»µ÷Óá£ÕýÈçÇ°ÃæÃèÊö£¬¿ÉÒÔʹÓúêap_run_xxx´¥·¢Ö¸¶¨µÄ¹Ò¹³¡£²»¹ý¹Ò¹³µÄ´¥·¢Í¨³£ÊÇÓɺËÐÄÄ£¿éÔÚ¶Ô¿Í»§¶ËÇëÇó½øÐд¦ÀíµÄ¹ý³ÌÖнøÐС£
ÎÒÃÇÀ´¿´Ò»¸ö¾ßÌåµÄÀý×Ó£¬ÕâÊǺËÐÄÄ£¿éÖйØÓÚ¹Ò¹³µÄ²¿·Ö¡£
´ÓÄ£¿éµÄ½á¹¹ÖпÉÒÔ¿´³ö£¬Ä£¿é½á¹¹Öаüº¬Ò»¸öÖ¸Õëregister_hook£¬¸ÃÖ¸Õëͨ³£Ö¸ÏòÄ£¿éÖеÄʵ¼ÊµÄ¹Ò¹³×¢²áº¯Êý£¬±ÈÈ磬¶ÔÓÚºËÐÄÄ£¿é¶øÑÔ£¬Æä¹Ò¹³×¢²áº¯Êýregister_hooks£¬ÄÇô½á¹¹ÖеĸÃÖ¸ÕëҲΪregister_hooks£º
AP_DECLARE_DATA module core_module = {
    STANDARD20_MODULE_STUFF,
    create_core_dir_config,       /* create per-directory config structure */
    merge_core_dir_configs,       /* merge per-directory config structures */
    create_core_server_config,    /* create per-server config structure */
    merge_core_server_configs,    /* merge per-server config structures */
    core_cmds,                    /* command apr_table_t */
    register_hooks                /* register hooks */
};
¶ø¾ßÌåµÄregister_hooksº¯ÊýÔòÈçÏ£º
static void register_hooks(apr_pool_t *p)
{
    ap_hook_create_connection(core_create_conn, NULL, NULL,
                              APR_HOOK_REALLY_LAST);
    ap_hook_pre_connection(core_pre_connection, NULL, NULL,
                           APR_HOOK_REALLY_LAST);
 
    ap_hook_post_config(core_post_config,NULL,NULL,APR_HOOK_REALLY_FIRST);
    ap_hook_translate_name(ap_core_translate,NULL,NULL,APR_HOOK_REALLY_LAST);
    ap_hook_map_to_storage(core_map_to_storage,NULL,NULL,APR_HOOK_REALLY_LAST);
    ap_hook_open_logs(ap_open_logs,NULL,NULL,APR_HOOK_REALLY_FIRST);
    ap_hook_handler(default_handler,NULL,NULL,APR_HOOK_REALLY_LAST);
    ap_hook_type_checker(do_nothing,NULL,NULL,APR_HOOK_REALLY_LAST);
    ap_hook_fixups(core_override_type,NULL,NULL,APR_HOOK_REALLY_FIRST);
    ap_hook_access_checker(do_nothing,NULL,NULL,APR_HOOK_REALLY_LAST);
    ap_hook_create_request(core_create_req, NULL, NULL, APR_HOOK_MIDDLE);
    APR_OPTIONAL_HOOK(proxy, create_req, core_create_proxy_req, NULL, NULL,
                      APR_HOOK_MIDDLE);
    ap_hook_pre_mpm(ap_create_scoreboard, NULL, NULL, APR_HOOK_MIDDLE);
¡­¡­
}
¸Ãº¯ÊýµÄÈÎÎñ·Ç³£µÄ¼òµ¥£¬¼´ÉùÃ÷¸ÃÄ£¿éÐèҪʵÏֵĹҹ³£¬ÒÔ¼°¶ÔÓ¦µÄ´¦Àíº¯Êý£¬¹©Ö÷³ÌÐòµ÷Óá£

¹ØÓÚ×÷Õß
ÕÅÖÐÇ죬ĿǰÖ÷ÒªµÄÑо¿·½ÏòÊÇǶÈëʽä¯ÀÀÆ÷£¬Òƶ¯Öмä¼þÒÔ¼°´ó¹æÄ£·þÎñÆ÷Éè¼Æ¡£Ä¿Ç°ÕýÔÚ½øÐÐApacheµÄÔ´´úÂë·ÖÎö£¬¼Æ»®³ö°æ¡¶ApacheÔ´´úÂëÈ«¾°·ÖÎö¡·ÉÏϲᡣApacheϵÁÐÎÄÕÂΪ±¾ÊéµÄ²Ý°¸²¿·Ö£¬¶ÔApache¸ÐÐËȤµÄÅóÓÑ¿ÉÒÔͨ¹ýflydish1234 at sina.com.cnÓëÖ®ÁªÏµ!

[1] [2] [3]

±à¼­ webmaster

 
 
 
ÆÀÂÛ
 
 
·¢±í
 
ÐÕÃû£º QQ£º
ÐԱ𣺠ÄÐ Å® MSN£º
E-mail£º Ö÷Ò³£º
ÆÀ·Ö£º 1 2 3 4 5
ÆÀÂÛÄÚÈÝ£º
ÑéÖ¤Â룺
  
  • Çë×ñÊØ¡¶»¥ÁªÍøµç×Ó¹«¸æ·þÎñ¹ÜÀí¹æ¶¨¡·¼°ÖлªÈËÃñ¹²ºÍ¹úÆäËû¸÷ÏîÓйط¨ÂÉ·¨¹æ¡£
  • ÑϽû·¢±íΣº¦¹ú¼Ò°²È«¡¢Ë𺦹ú¼ÒÀûÒæ¡¢ÆÆ»µÃñ×åÍÅ½á¡¢ÆÆ»µ¹ú¼Ò×Ú½ÌÕþ²ß¡¢ÆÆ»µÉç»áÎȶ¨¡¢ÎêÈè¡¢·Ì°ù¡¢½ÌËô¡¢Òù»àµÈÄÚÈÝµÄÆÀÂÛ ¡£
  • Óû§Ðè¶Ô×Ô¼ºÔÚʹÓñ¾Õ¾·þÎñ¹ý³ÌÖеÄÐÐΪ³Ðµ£·¨ÂÉÔðÈΣ¨Ö±½Ó»ò¼ä½Óµ¼Öµģ©¡£
  • ±¾Õ¾¹ÜÀíÔ±ÓÐȨ±£Áô»òɾ³ýÆÀÂÛÄÚÈÝ¡£
  • ÆÀÂÛÄÚÈÝÖ»´ú±íÍøÓѸöÈ˹۵㣬Óë±¾ÍøÕ¾Á¢³¡Î޹ء£
  •  
    ÖйúÔ´ÂëÍø - WWW.YUANMA.ORG - Öйú¿ª·ÅÔ´´úÂëÉçÇø