لماذا يتم تطهير متغيراتي المشتركة بين Perlchildinithandler و PerlResponseHandler في Mod_perl؟
سؤال
أحاول تحميل ملف التكوين في تجزئة خلال بلدي PerlChildInitHandler
ثم الوصول إلى القيم من PerlResponseHandler
. ومع ذلك ، على الرغم من أن رقم العملية هو نفسه ، يبدو أن المتغيرات تغيرت أثناء child_init()
استدعاء العودة إلى قيمها الافتراضية عندما handler()
يتم استدعاء.
السيناريو الأساسي هو:
package StartupLog;
# the variable I'm testing
my $sticky = 0;
sub child_init {
$sticky = 1;
return 0;
}
sub handler {
warn __PACKAGE__ . " sticky = $sticky\n"; ### always says "0" but should say "1"
return 0;
}
1;
المحلول
لم يتم الرد على هذا أبدًا ، لذا انتقلت في النهاية إلى استخدام PerlpostConfighandler ، الذي بدا أنه يعمل بشكل مقبول. لا يمكنني إلا أن أفترض أن الأمر يتعلق بالتقدم الذي يحدث في Perlchildinitihandler ، لكن ، آسف للقول ، استسلمت. أتأمل ان يساعد هذا احدهم في المستقبل.
نصائح أخرى
بشكل عام ، إذا كنت ترغب في تحميل شيء ما في وقت Childinit ، والوصول إليه في مرحلة الاستجابة ، فستقوم بإلغاء حزمة عالمية (مثل $ my :: fariable = 'lols'). لم أحاول أبدًا القيام بذلك بالطريقة التي أنت هنا. هل حاولت استخدامنا بدلاً من ربما بلدي؟.