လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> ဖြစ်နိုင်ချေရှိသောအကြောင်းပြချက် 5 ခု session_register_shutdown () သည်မလုပ်ဆောင်ပါ

ဖြစ်နိုင်ချေရှိသောအကြောင်းပြချက် 5 ခု session_register_shutdown () သည်မလုပ်ဆောင်ပါ

M66 2025-05-28

PHP တွင် session_register_shutdown () function ကို အသုံးပြု. session တစ်ခုပိတ်ထားသည့်အခါ consback function ကိုမှတ်ပုံတင်ရန်အသုံးပြုသည်။ session တစ်ခုကွပ်မျက်မှုအဆုံးမှာ session ကိုကယ်တင်ခြင်းနှင့်မှန်ကန်စွာပိတ်ထားနိုင်သည်။ သို့သော် developer အများအပြားသည် function မကွပ်မျက်ခံရသည့်အခြေအနေများနှင့်ကြုံတွေ့ရမည့်အခြေအနေများနှင့်ကြုံတွေ့ရလိမ့်မည်။ ဤဆောင်းပါးသည်ဤပြ issue နာကိုအာရုံစိုက်မည်ဖြစ်ပြီးဖြစ်နိုင်ချေရှိသောအဖြစ်အပျက်ငါးခုကိုခွဲခြမ်းစိတ်ဖြာပါက PHP code နမူနာများနှင့် တွဲဖက်. ရှင်းပြပါလိမ့်မည်။


1 ။ PHP ဗားရှင်း compatibility ပြ issues နာများ

Session_register_shutdown () function ကို PHP 5.4.0 ကတည်းကမိတ်ဆက်ခဲ့သည်။ အကယ်. သင်သည် PHP ဗားရှင်းကို 5.4 အောက်ရှိ PHP ဗားရှင်းကိုအသုံးပြုနေပါက function သည်လုံးဝမတည်ရှိနိုင်ပါ။ ၎င်းကိုခေါ်ဆိုခြင်းသည်သဘာဝကျကျအကျိုးသက်ရောက်လိမ့်မည်မဟုတ်ပါ။

 <?php
// PHPဗားရှင်းတရားစီရင်ရာ
if (version_compare(PHP_VERSION, '5.4.0', '<')) {
    echo "ယခုPHPမူကွဲကိုမပံ့ပိုးပါsession_register_shutdown()လုပ်ဆောင်ချက်。";
}
?>

PHP ဗားရှင်းကိုအဆင့်မြှင့်တင်ရန်သို့မဟုတ်လိုက်ဖက်သော session စီမံခန့်ခွဲမှုနည်းလမ်းကိုချမှတ်ရန်အကြံပြုသည်။


2 ။ အဆိုပါ session ကိုမှန်ကန်စွာစတင်မပေးပါ

Session_register_shutdown () session ကိုစတင်ပြီးနောက် callback function ကိုမှတ်ပုံတင်ရမည် ( Session_Start () )) ။ အကယ်. သင်ခန်းစာမဖွင့်ပါကမှတ်ပုံတင်ခြင်းသည်အကျိုးသက်ရောက်မည်မဟုတ်ပါ။

 <?php
session_start(); // အဆိုပါ session ကိုပထမ ဦး ဆုံးစတင်ရမည်ဖြစ်သည်

session_register_shutdown(function() {
    // ဤနေရာတွင် session ကိုပိတ်ထားသည့်အခါဖျော်ဖြေခံရဖို့အရေးယူဆောင်ရွက်မှုဖြစ်ပါတယ်
    error_log("Sessionရုပ်သိမ်းခြင်း,callbacks execute");
});
?>

session_start () ကို function ကိုမှတ်ပုံတင်ခြင်းမပြုမီဟုခေါ်ပါ။


3 ။ callback function ကိုမှန်ကန်စွာမသတ်မှတ်ထားပါသို့မဟုတ် parameters တွေကိုမမှန်ကန်ပါ

session_register_shutdown () parameters တွေကိုမပါဘဲ callback function ကိုလက်ခံသည်။ အကယ်. 0 င်လာသည့် callback function parameters များသည်လိုအပ်ချက်များကိုမဖြည့်ဆည်းပေးနိုင်ပါက function ကိုကွပ်မျက်မည်မဟုတ်ပါ။

 <?php
session_start();

session_register_shutdown(function() {
    // မှန်ကန်သော parameterless ပြန်ခေါ်ချက်
    error_log("Sessionရုပ်သိမ်းခြင်း,မှန်ကန်သော callback");
});
?>

အမည်မသိလုပ်ဆောင်ချက်များကို parameters များသို့မဟုတ်မမှန်ကန်သော callback ကြေငြာချက်များဖြင့်အသုံးပြုခြင်းကိုရှောင်ပါ။


4 ။ အခြား Session စီမံခန့်ခွဲမှုယန္တရားများ၏ပ conflicts ိပက်ခများ

အကယ်. session_write_close () ခေါ်ဆိုမှုများသည်ကုဒ်နံပါတ်များတွင်ပါ 0 င်ပါကသို့မဟုတ်အခြားမူဘောင်များ / စာကြည့်တိုက်များသည် Session Oreming Page တွင်ပြုပြင်မွမ်းမံခြင်း,

 <?php
session_start();

session_register_shutdown(function() {
    error_log("ကရိယာတန်းဆာsessionရုပ်သိမ်းခြင်း回调");
});

// 这里不要提前ရုပ်သိမ်းခြင်း会话
// session_write_close(); // ကြိုတင်ခေါ်လျှင်,会导致注册的回调不ကရိယာတန်းဆာ
?>

ကျေးဇူးပြု. ခေါ်ဆိုမှုကိုစောစောစီးစီးပိတ်ခြင်းကိုရှောင်ပါ။


5 ။ Script ခြွင်းချက်သို့မဟုတ်အစောပိုင်းအဆုံးသတ်

Scriptionulation (သို့ ) ထွက်ပေါက် () / die () () / die () ကို ကြိုတင်ခေါ်ဝေါ်စဉ်အခါဆိုးဝါးသောအမှားများဖြစ်ပေါ်သောအခါတွင်မှတ်ပုံတင်ထားသောမှတ်ပုံတင်ခြင်းကိုပိတ်ထားခြင်းမပြုနိုင်ပါ။

 <?php
session_start();

session_register_shutdown(function() {
    error_log("回调ကရိယာတန်းဆာ成功");
});

// ဇာတ်ညွှန်းရိုသေလေးစားမှုသို့မဟုတ်အချိန်မတန်ဘဲရပ်စဲခြင်း
// exit;  // 如果ကရိယာတန်းဆာexit,မှတ်ပုံတင်ထားသော callback ကိုအစပျိုးမည်မဟုတ်ပါ
?>

၎င်းသည်ပုံမှန်အားဖြင့်ပုံမှန်အားဖြင့်ပုံမှန်အားဖြင့်အမှားကိုင်တွယ်သည့်ယန္တရားတစ်ခုမှတဆင့်သို့မဟုတ်အရေးပါသောဖြစ်စဉ်များတွင်ထွက်ပေါက်ထုတ်ပြန်ချက်များကိုအသုံးပြုခြင်းကိုရှောင်ရှားရန်သေချာစေရန်အကြံပြုသည်။


အကျဉ်းချုပ်

Session_Register_shutdown () သည်အလွန်အသုံးဝင်သောလုပ်ဆောင်မှုတစ်ခုဖြစ်သည်။ သို့သော်အထက်ပါအချက်များကိုသင်အသုံးပြုသောအခါအထက်ပါအချက်ငါးချက်ကိုဂရုပြုရမည်။

  • PHP ဗားရှင်းသည်≥5.4ဖြစ်ရမည်

  • အဆိုပါ session ကိုစတင်ရပါမည်

  • callback function ကိုအဘယ်သူမျှမ parameters တွေကိုရှိရမည်

  • အစည်းအဝေးများအစောပိုင်းပိတ်ခြင်းကိုရှောင်ကြဉ်ပါ

  • ခြွင်းချက်ပြတ်တောက်ခြင်းကို Script Script ကိုရှောင်ပါ

ဤအခြေအနေများနှင့်တွေ့ဆုံပြီးမှသာ session_register_shutdown () ပုံမှန်အားဖြင့်ကွပ်မျက်ခံရခြင်း,