စွမ်းဆောင်ရည်မြင့်မားသော PHP applications များဖွံ့ဖြိုးတိုးတက်မှုတွင်တိကျသောအချိန်ထိန်းချုပ်မှုရရှိရန်အတွက်စနစ်ခေါ်ဆိုမှုများကိုဆင်ခြင်တုံတရားအသုံးပြုမှုသည်အစီအစဉ်ကိုတိုးတက်စေရန်အတွက်အဓိကဆက်ဆံမှုတစ်ခုဖြစ်သည်။ မြင့်မားသောတိကျသောအိပ်စက်ခြင်းအတွက် PHP ရှိ PHP မှလုပ်ဆောင်ချက်တစ်ခုအနေ ဖြင့် PHP FPM (Fasticgi Process Manager) နှင့် ပူးပေါင်း. ထူးခြားသောအားသာချက်များနှင့်အကန့်အသတ်များနှင့်အလားအလာရှိသောကန့်သတ်ချက်များရှိသည်။ ဤဆောင်းပါးသည် Php FPM ပတ်ဝန်းကျင်ရှိ PHP FPM ပတ်ဝန်းကျင်မှ PHP FPM ပတ်ဝန်းကျင်ရှိ PHP FPM ပတ်ဝန်းကျင်ရှိ Time_nanosleep function ၏ application mode နှင့်လုပ်ငန်းလည်ပတ်မှုစွမ်းဆောင်ရည်ကိုဆန်းစစ်ကြည့်ရှုလိမ့်မည်။
Time_Nanosleep (INT $ nanoseconds): bool function သည် PPP scripts ကိုသတ်မှတ်ထားသောစက္ကန့်ပိုင်းနှင့် nanoseconds ကိုကွပ်မျက်ရန်ခွင့်ပြုရန်ခွင့်ပြုထားပြီးတိကျမှန်ကန်မှုသည် nanosecond အဆင့်သို့ရောက်ရှိနိုင်သည်။ ရိုးရာ အိပ်စက်ခြင်း () သို့မဟုတ် USEEP ()) နှင့်နှိုင်းယှဉ်ပါက Time_Nanosleep နှင့်နှိုင်းယှဉ်လျှင်ပိုမိုကောင်းမွန်သော granular time control ကိုထောက်ပံ့သည်။
နမူနာကုဒ်:
<?php
// အိပ်နေခြင်း1စက္ကန့်သုည500tanoseconds တဆယ်တစ်သောင်း(အခုချက်ချင်း1.005စက်ဏန့်)
time_nanosleep(1, 5000000);
echo "အိပ်နေခြင်း结束\n";
?>
PHP FPM သည်တစ်ပြိုင်နက်တည်း PHP တောင်းဆိုမှုများစွာကိုကိုင်တွယ်ရန်ဒီဇိုင်းမန်နေဂျာတစ်ခုဖြစ်သည်။ ၎င်းသည် PHP scripts ကို Multi-process mode တွင် သုံး. Multi-Process CGI Mode ကို ဆက်လက်. တုန့်ပြန်မှုမြန်ဆန်မှုကိုရှောင်ရှားခြင်းနှင့်တုန့်ပြန်မှုမြန်နှုန်းကိုတိုးတက်စေသည်။ FPM ရေကူးကန်ရှိအလုပ်သမားလုပ်ငန်းစဉ်တစ်ခုစီသည်တောင်းဆိုမှုများကိုလွတ်လပ်စွာမထိခိုက်စေဘဲတစ် ဦး နှင့်တစ် ဦး မထိခိုက်ပါ။
PHP script သည် FPM အလုပ်သမားလုပ်ငန်းစဉ်တွင် Time_Nanosleep ကို ခေါ်ဆိုသောအခါ, လုပ်ငန်းစဉ်သည်လက်ရှိ script ၏ကွပ်မျက်မှုကိုရပ်တန့်ပြီးသတ်မှတ်ထားသောအချိန်မကုန်မီအထိပိတ်ဆို့ခြင်းအခြေအနေကို 0 င်သည်။ FPM သည် Multi-process mode ကိုကျင့်သုံးပြီးကတည်းကဤပိတ်ဆို့ခြင်းသည်လက်ရှိအခြေအနေကိုသာထိခိုက်စေပြီးဆာဗာတစ်ခုသို့မဟုတ်အခြားတောင်းဆိုမှုများအားလုံးကိုပိတ်ဆို့ခြင်းမပြုပါ။
၎င်းသည်ထူးခြားသည့်အင်္ဂါရပ်နှစ်ခုကိုဖြစ်ပေါ်စေသည်။
Timek Time_Nanosleep သည် ပိတ်ဆို့ခြင်းအချိန်ကိုတိကျစွာထိန်းချုပ်ရန်ခွင့်ပြုသည်, အချိန်ကုန်ခံကာလအတွင်းစစ်တမ်းကောက်ယူခြင်း, Retry ယန္တရားများ,
တစ်ပြိုင်နက်တည်းကိုမထိခိုက်ပါ - တစ်ခုတည်းသောလုပ်သားတစ် ဦး ၏ပိတ်ဆို့ခြင်းသည်အခြားအလုပ်သမားများ၏တစ်ပြိုင်နက်တည်းလုပ်ဆောင်မှုစွမ်းရည်ကိုမသက်ရောက်နိုင်ပါ။
Third-party apis ကိုခေါ်သည့်အခါအကြိမ်ရေအလွန်အကျွံပိတ်ဆို့ခြင်းကိုရှောင်ရှားရန် Time_nanosleep ကို Time_Nanosleep ကိုကောင်းမွန်စွာညှိနှိုင်းစောင့်ဆိုင်းရန်အသုံးပြုနိုင်သည်။
<?php
$maxRetries = 3;
$retry = 0;
while ($retry < $maxRetries) {
$response = file_get_contents('https://gitbox.net/api/v1/data');
if ($response !== false) {
break;
}
time_nanosleep(0, 500000000); // အိပ်နေခြင်း0.5စက်ဏန့်
$retry++;
}
echo "အပြည့်အဝတောင်းဆိုမှု\n";
?>
Daemons သို့မဟုတ် Long Polling Scripts နှင့် တွဲဖက်. Time_Nanosleep သည် Loop Execution Intervals ကိုတိကျစွာထိန်းချုပ်ရန်နှင့် CPU အရင်းအမြစ်များကိုစွန့်ပစ်ပစ္စည်းများကိုလျှော့ချပေးသည်။
<?php
while (true) {
// Task Execute Logic
echo "တာဝန်များကိုလုပ်ဆောင်...\n";
time_nanosleep(2, 0); // အိပ်နေခြင်း2စက်ဏန့်
}
?>
Usleep () သို့မဟုတ် အိပ်ခြင်း () အိပ်စက်ခြင်း နှင့်နှိုင်းယှဉ်ပါက Time_Nanosleep သည်အကောင်အထည်ဖော်မှုတွင်ပိုမိုတိကျသောစနစ်ခေါ်ဆိုမှုများ (ဥပမာ noosleep ) ဟုခေါ်ဆိုသည်။ သို့သော်ပိတ်ဆို့ခြင်းခေါ်ဆိုမှုတစ်ခုဖြစ်သောကြောင့်ရေရှည်ဖုန်းခေါ်ဆိုမှုများသည်အလုပ်သမားများ၏လုပ်ငန်းစဉ်အရင်းအမြစ်များကိုသိမ်းပိုက်ဆဲဖြစ်သော်လည်း FPM Pool တွင်ရရှိနိုင်သည့်လုပ်ငန်းစဉ်များကျဆင်းသွားနိုင်သည်။
ဘာသာတရားသည် FPM process ရေကန်အရေအတွက်ကိုပြင်ဆင်ခြင်းနှင့်တောင်းဆိုမှုအမြောက်အများတွင် အချိန်ကြာမြင့်စွာအချိန်ကြာမြင့်စွာ ကွပ်မျက်ခြင်းကိုရှောင်ရှားရန်မှာစနစ်တည်ငြိမ်မှုကိုသေချာစေရန်သော့ချက်ဖြစ်သည်။
signal interrupt processing : time_nanosleep စနစ်အချက်ပြပြတ်တောက်မှုကြောင့်ကြိုတင်လာနိုင်သည်။ သင်ပြန်လာသောတန်ဖိုးကိုဖမ်းယူခြင်းဖြင့်သင်အပြည့်အဝမြုံနေသည်ကိုသင်ဆုံးဖြတ်နိုင်သည်။
ပိတ်ဆို့ခြင်းမဟုတ်သောအခြားရွေးချယ်စရာ - အ 0 တ်အထည်သို့မဟုတ်ပြတ်တောင်းပြတ်တောင်းသောအခြေအနေများတွင် အချိန်ကို ပိတ်ဆို့ခြင်းသည်မသင့်တော်ပါ။
ဗားရှင်းသဟဇာတ - PHP 5.0 ကတည်းက Time_Nanosleep ကို PHP 5.0 ကတည်းကထောက်ခံသည်။ အသုံးမပြုမီ, သင်လည်ပတ်နေသောပတ်ဝန်းကျင်၏ PHP ဗားရှင်းကိုသင်အတည်ပြုသင့်သည်။
Time_Nanosleep သည် PHP FPM ပတ်ဝန်းကျင်တွင်မြင့်မားသောအိပ်စက်ခြင်းထိန်းချုပ်မှုကိုရရှိနိုင်ပါသည်။ ၎င်းသည်လက်ရှိကန့်သတ်ခြင်း, အချိန်အားဖြင့် Time_Nanosleep ကို အသုံးပြု. PHP FPM ၏လုပ်ငန်းစဉ်စီမံခန့်ခွဲမှုအားသာချက်များဖြင့်ပေါင်းစပ်ခြင်းဖြင့် PHP FPM ၏စွမ်းဆောင်ရည်နှင့်တည်ငြိမ်မှုကိုထိရောက်စွာတိုးတက်အောင်လုပ်နိုင်သည်။
အချိန်အထိခိုက်မခံသော PHP 0 န်ဆောင်မှုကိုသင်တည်ဆောက်ရန်လိုအပ်ပါက time_nanosleep နှင့် PHP FPM တို့အကြားပူးပေါင်းညှိနှိုင်းမှုယန္တရားကိုအပြည့်အဝနားလည်သဘောပေါက်ရန်နှင့်မြှင့်တင်ခြင်းသည်ထိရောက်သောဖွံ့ဖြိုးတိုးတက်မှုဆီသို့ ဦး တည်သည့်အရေးကြီးသောခြေလှမ်းတစ်ခုဖြစ်သည်။