لماذا يتم تطهير متغيراتي المشتركة بين Perlchildinithandler و PerlResponseHandler في Mod_perl؟

StackOverflow https://stackoverflow.com/questions/3519606

سؤال

أحاول تحميل ملف التكوين في تجزئة خلال بلدي 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'). لم أحاول أبدًا القيام بذلك بالطريقة التي أنت هنا. هل حاولت استخدامنا بدلاً من ربما بلدي؟.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top