PHP တွင် session_register_shutdown () function ကိုအသုံးပြုသည်။ session ကိုပိတ်ထားသည့်အခါအလိုအလျောက်ကွပ်မျက်ခံရနိုင်သည့် callback function ကိုမှတ်ပုံတင်ရန်အသုံးပြုသည်။ သို့သော်ရှုပ်ထွေးသောစီမံကိန်းများတွင်တခါတရံတွင် community_register_shutdown () သည် တစ်ခါတစ်ရံတွင်မတော်တဆရေးသားခြင်းသို့မဟုတ်မှတ်ပုံတင်ခြင်းမပြုနိုင်ပါ။ ဤဆောင်းပါးသည်ဤအခြေအနေကိုမည်သို့ရှောင်ရှားနိုင်ပြီး,
ProSess_register_shutdown () PHP 5.4 အပြီး Register_ShutDown_Function ('session_write_close_close') ကို အစားထိုးရန်အကြံပြုထားသောနည်းလမ်းဖြစ်သည်။ ရည်ရွယ်ချက်မှာ script ၏အဆုံးတွင် PHP session ကိုအလိုအလျောက်ပိတ်ထားကြောင်းသေချာစေရန်ဖြစ်သည်။
<?php
session_start();
session_register_shutdown(); // Session အနီးကပ် function ကိုမှတ်ပုံတင်ပါ
?>
ဤ လုပ်ဆောင်ချက်သည်အတွင်းပိုင်းအနီးကပ်လုပ်ဆောင်မှုကိုအလိုအလျောက်မှတ်ပုံတင်ခြင်း,
PHP တွင်မှတ်ပုံတင်ခြင်းပိတ်ခြင်းလုပ်ငန်းသည် conder_shutdown_Function () ကို code rouse_shutdown_shutdown () တွင်မှတ်ပုံတင်ထားသော Shutdown_Shutdown () တွင်မှတ်ပုံတင်ထားသော shutdown_hutown () ကိုပြန်လည်ထည့်သွင်းထားသည့်ပိတ်ပွဲသည်အငြင်းပွားဖွယ်ရာများနှင့်အခြားစစ်ဆင်ရေးများကအပြည့်အစုံကိုပိတ်ထားပြီးသည့်အခါ,
code သည် session_register_shutdown () ကိုသာခေါ်ဆိုပါ။ Frameworks (သို့) ကြီးမားသောစီမံကိန်းများတွင် Singleton သို့မဟုတ် Global State သည် function ကိုတစ်ကြိမ်သာမှတ်ပုံတင်ရန်သေချာစေရန်အသုံးပြုသည်။
<?php
if (!defined('SESSION_SHUTDOWN_REGISTERED')) {
session_register_shutdown();
define('SESSION_SHUTDOWN_REGISTERED', true);
}
?>
အကယ်. သင်သည်အပိုဆောင်းပိတ်ထားသောလုပ်ဆောင်မှုတစ်ခုကိုမှတ်ပုံတင်ရန်လိုအပ်ပါက session_register_shutdown () ကိုမှီခိုမည့်အစားသင် session_write_close () ကို ကိုယ်တိုင်ခေါ်ဆိုနိုင်သည်။
<?php
session_start();
register_shutdown_function(function() {
// ပထမ ဦး ဆုံး session ကိုအနီးကပ်စစ်ဆင်ရေးလုပ်ဆောင်ပါ
session_write_close();
// ဇာတ်ညွှန်း၏အဆုံးတွင်ဖျော်ဖြေရန်လိုအပ်သည့်အခြားလုပ်ရပ်များ
error_log("script ၏အဆုံး,အခြား Shutdown စစ်ဆင်ရေးလုပ်ဆောင်ပါ");
});
?>
ဤနည်းလမ်းသည် session shutdown ကိုအမြဲတမ်းအကောင်အထည်ဖော်ရန်နှင့်မပြောင်းလဲပါ။
Session_write_Close () ကိုခေါ်သည်နှင့်တစ်ပြိုင်နက်လက်ရှိ session data ကိုရေးသားပြီးပိတ်ထားပြီးနောက်ဆက်တွဲအစည်းအဝေးရေးဆွဲခြင်းသည်မမှန်ကန်ပါ။ session_write_close () ကို code တွင်ကြိုတင်ခေါ်ဝေါ်ပါကထပ်ခါတလဲလဲခေါ်ဆိုမှုများကိုရှောင်ရှားသင့်သည်။
PHP သည်မှတ်ပုံတင်ထားသောအပိတ် function ကိုတိုက်ရိုက်မမေးမြန်းသော်လည်းပ conflicts ိပက်ခများကိုကာကွယ်ရန် Encapsulation မှတ်ပုံတင်ခြင်းလုပ်ငန်းစဉ်မှတဆင့်တူညီစွာစီမံနိုင်သည်။
<?php
class ShutdownManager {
private static $callbacks = [];
public static function register(callable $callback) {
self::$callbacks[] = $callback;
}
public static function run() {
foreach (self::$callbacks as $callback) {
call_user_func($callback);
}
}
}
session_start();
session_register_shutdown();
ShutdownManager::register('session_write_close');
ShutdownManager::register(function() {
error_log("စိတ်ကြိုက်ဇာတ်ညွှန်းအနီးကပ်စစ်ဆင်ရေး");
});
register_shutdown_function(['ShutdownManager', 'run']);
?>
၎င်းသည်ပိတ်ပစ်နေသည့်စစ်ဆင်ရေးအားလုံး၏ဗဟိုစီမံခန့်ခွဲမှုများကိုတစ် ဦး နှင့်တစ် ဦး overwrite လုပ်ရန်ခွင့်ပြုသည်။
<?php
session_start();
// ၎င်းကိုတစ်ကြိမ်သာခေါ်ဆိုရန်သေချာပါစေ session_register_shutdown()
if (!defined('SESSION_SHUTDOWN_REGISTERED')) {
session_register_shutdown();
define('SESSION_SHUTDOWN_REGISTERED', true);
}
// အပိုစိတ်ကြိုက်အနီးကပ် function ကို
register_shutdown_function(function() {
// အပိုဆောင်း shutdown စစ်ဆင်ရေး
error_log("session ကိုပိတ်ပြီးနောက်ဖျော်ဖြေနောက်ထပ်လုပ်ရပ်များ");
});
// ဥပမာဆက်သွယ်မှု URL
$url = "https://m66.net/path/to/resource";
echo "<a href=\"$url\">အရင်းအမြစ်များကိုရယူပါ</a>";
?>
session_register_shutdown () ကိုခေါ်ဆိုမှုမျိုးစုံကိုရှောင်ကြဉ်ပါ။
Register_shutDown_Function () , ပိတ်သိမ်းမှုစစ်ဆင်ရေးကိုတညီတညွတ်တည်းစီမံခန့်ခွဲနိုင်ပြီး session_write_close () session_write_close () ကို ကိုယ်တိုင်ကိုယ်ကျကွပ်မျက်ခံရသည်။
session_write_close_close () ကိုကြိုတင်မခေါ်ပါနှင့်။
ရှုပ်ထွေးသောစီမံကိန်းများတွင် collowback လုပ်ဆောင်ချက်များကိုရေးသားခြင်းမှတားဆီးရန်ပိတ်ထားသော function ကိုစီမံခန့်ခွဲမှုများကို encapsulated လုပ်နိုင်သည်။
အထက်ပါနည်းလမ်းဖြင့် Session_register_shutdown () သည် php session ကိုပိတ်ထားသည့်အခါပုံမှန်လည်ပတ်မှုဆိုင်ရာအချက်အလက်များ၏လုံခြုံမှုနှင့်ယုံကြည်စိတ်ချရမှုတိုးတက်စေရန်ပုံမှန်စစ်ဆင်ရေးများတိုးပွားလာခြင်းအားဖြင့်သာမန်ခွဲစိတ်မှုမရှိခြင်းသို့မဟုတ်မှတ်ပုံတင်ခြင်းမပြုရန်ထိရောက်စွာတားဆီးနိုင်သည်။