Apache2::Reloadã失æããåé¡ã«å¯¾ããããã
æç« ãä¿®æ£ãã¾ããããããã®å¤æ´ã¯ããã¾ããã
Apache2::Reloadã¯ã対象ããã±ã¼ã¸ã®ã·ã³ãã«ãå
¨ã¦åé¤ããä¸ã§ãªãã¼ãããããã«ãªã£ã¦ãã¾ãããããã対象ããã±ã¼ã¸ã®å¤é¨ããåçã«å®ç¾©ããã¦ããã·ã³ãã«ãåé¤ãã¦ãã¾ãã¨ã復å
ãããã¨ãã§ããªããªã£ã¦ãã¾ãã¾ããDBIx::Classã¨ãä»ã«ãè²ã
ãClass::Data::Inheritableã®ãããªãã®ã使ã£ã¦ããå ´åã¯å¤§æµãã®ç¾è±¡ãèµ·ãã¾ãã
ããã§Apache2::Reloadã«å½ã¦ãåçããããä½ã£ã¦ã¿ã¾ããããã®ããããå½ã¦ãã¨ãã·ã³ãã«ãå ¨ã¦åé¤ãã¦ãã¾ãModPerl::Util::unload_package_ppã¯ä½¿ãããªããªãã%INCããã¢ã¸ã¥ã¼ã«åã®ã¿ãåé¤ãããããã«ãªãã¾ãã
PerlModule Apache2::Reload PerlInitHandler Apache2::Reload <Perl> use Apache2::Reload (); use ModPerl::Util (); # hack for "Can't locate mod_perl.pm" caused by mod_perl2.pm delete $INC{'mod_perl.pm'}; # hack for problem that package variable doesn't appear again. if ( my $handler = Apache2::Reload->can('handler') ) { undef *Apache2::Reload::handler; *Apache2::Reload::handler = sub { # delete from %INC instead of unload symbols local $ModPerl::Util::DEFAULT_UNLOAD_METHOD = sub { my $package = shift; delete $INC{ Apache2::Reload::package_to_module($package) }; }; # call reload process $handler->(@_); }; } </Perl>
- ãã®ãããã«ãã£ã¦ã·ã³ãã«ã®åé¤ã¯è¡ãªãããªããªãã¾ãã®ã§ã注æãã ãããï¼ä¸æ¸ãã追å ã¯æ£ããè¡ãªããã¾ããï¼
- ãã®ãããã«ã¯$INC{'mod_perl.pm'} = '/dev/null'åé¡ã«å¯¾ããä¿®æ£ãå ¥ã£ã¦ãã¾ãã