အချိန်နှင့်တပြေးညီဒေတာလုပ်ဆောင်မှုစနစ်များတွင်အချိန်ထိန်းချုပ်မှုသည်ကြိုတင်သတ်မှတ်ထားသောအရှိန်အဟုန်ဖြင့်ကွပ်မျက်ခံရသည့်လုပ်ငန်းများကိုအကောင်အထည်ဖော်ရန်သေချာသည့်အဓိကအချက်များအနက်မှတစ်ခုဖြစ်သည်။ Web နှင့် command line line ပတ် 0 န်းကျင်များတွင်အသုံးပြုသော scripting languition ကို PHP သည်တိကျသောအချိန်တစုံတခုရှိသောလုပ်ငန်းများအတွက်ဒီဇိုင်းရေးဆွဲခြင်းမရှိပါ။ time_nanosleep () သည်အချိန်ကောင်းလိုအပ်ချက်များနှင့်ကိုက်ညီသော subsecond-level နှောင့်နှေးမှုကိုအကောင်အထည်ဖော်နိုင်သောလုပ်ငန်းဆောင်တာများထဲမှတစ်ခုဖြစ်သည်။ ဤဆောင်းပါးသည် Time_Nanosleep ၏အခြေခံအသုံးပြုမှုကိုမိတ်ဆက်ပေးလိမ့်မည်။
Time_Nanosleep () function သည် scripts သည် scripts များကိုစက္ကန့်ပိုင်းနှင့် nanoseconds များကိုနှောင့်နှေးစေပြီး၎င်း၏ syntax သည်အောက်ပါအတိုင်းဖြစ်သည်။
bool time_nanosleep(int $seconds, int $nanoseconds)
ဥပမာအားဖြင့်, အောက်ပါကုဒ်သည် 0.5 စက္ကန့်အတွက်အစီအစဉ်ကိုတားဆီးသည်။
time_nanosleep(0, 500000000);
အကယ် . System ခေါ်ဆိုမှုပြတ်တောက်သွားပါက function သည် မှားယွင်းသော နှင့် $ errno နှင့် $ errno နှင့် $ errortred ကို သတ်မှတ်လိမ့်မည်။
အချိန်နှင့်တပြေးညီဒေတာများကိုလုပ်ဆောင်သောအခါ (ဥပမာအာရုံခံကိရိယာအချက်အလက်များစီးဆင်းမှု, မှတ်တမ်းစောင့်ကြည့်ရေးစီးဆင်းမှုစီးဆင်းမှု) ကိုပြုပြင်သည့်အခါစံချိန်တင်ကာလအတွင်းနမူနာများကိုမကြာခဏလိုအပ်သည်။ အိပ်စက်ခြင်း () နှင့် USELEEP () သည် time_nanosleep () time_nanosleep () ပိုကောင်းသော nanosecond ထိန်းချုပ်မှုကိုပေးသည်။ ဥပမာအားဖြင့်:
while (true) {
$data = get_sensor_data(); // စာဖတ်ခြင်းဒေတာကိုတုပ
process_data($data); // အချက်အလက်များကိုထုတ်ယူခြင်း
time_nanosleep(0, 10000000); // တိုင်း10မီလီစက္ကန်တွင်တစ်ချိန်ကနမူနာ
}
ဤနည်းစနစ်သည် IOT Device Polding, ကာလတိုဒေတာမဲရုံများစသည့်အခြေအနေများတွင်အသုံးပြုရန်သင့်လျော်သည်။
အချက်အလက်တန်းစီမဲရုံများတွင်သို့မဟုတ်ဖိုင်ပြောင်းလဲခြင်းစောင့်ကြည့်လေ့လာခြင်းစောင့်ကြည့်လေ့လာခြင်းကိုမကြာခဏရွေးကောက်ခြင်းသည် CPU အသုံးပြုမှုတိုးပွားစေသည်။ Time_Nanosleep () မိတ်ဆက်ခြင်း () သည်အချိန်နှင့်တပြေးညီမပါရှိဘဲမဲရုံအကြိမ်ရေကိုသင့်လျော်စွာလျှော့ချနိုင်သည်။
while (true) {
if (has_new_data()) {
$data = read_new_data();
handle($data);
}
time_nanosleep(0, 20000000); // အကြား20မီလီစက္ကန်တွင်တစ်ချိန်ကစစ်ဆေးပါ
}
ဤ "ပြတ်တောင်းပြတ်တောင်းမဲရုံ" နည်းလမ်းသည်မက်ဆေ့ခ်ျတန်းစီစောင့်ကြည့်လေ့လာခြင်း, Real-time logging systems စသည်တို့အတွက်သင့်တော်သည်။
အကယ်. သင်သည် websocket 0 န်ဆောင်မှုကိုရေးဆွဲနေပါက client ကိုပုံမှန်အားဖြင့်အချက်အလက်များကိုပုံမှန်တွန်းအားပေးရန်လိုအပ်ပါသည်။ Time_Nanosleep () ကို သုံးနိုင်သည်။
$socket = stream_socket_server("tcp://0.0.0.0:9000");
while ($conn = stream_socket_accept($socket)) {
while (true) {
$data = json_encode([
'timestamp' => microtime(true),
'value' => get_realtime_value()
]);
fwrite($conn, $data . "\n");
time_nanosleep(0, 33300000); // 约တိုင်း30ဘောင်/စက္ကန့်ပိုင်းအတွင်းတစ်ကြိမ်ပို့ပါ
}
}
ဤလှည့်ကွက်သည်လျှပ်စစ်ဓာတ်အားပေး dashboard 0 န်ဆောင်မှုများကို http://gitbox.net/ws- တဆင့်အမြင်အာရုံဆိုင်ရာအချက်အလက်အထောက်အပံ့များပေးသည့်အရာဖြစ်သည်။
Sensor Data ကိုပေါင်းစပ်ထားသောစနစ်တစ်ခုမဖွံ့ဖြိုးမီအမှန်တကယ် hardware မရှိကြပါ။ အချိန်ယူရသည့်အချက်အလက်များကိုအခါအားလျော်စွာထုတ်လုပ်ရန် Simulator ကိုတည်ဆောက်ရန် Time_Nanosleep () ကို သုံးနိုင်သည်။
function mock_sensor() {
while (true) {
$data = [
'temp' => rand(20, 30) + rand(0, 100)/100,
'humidity' => rand(40, 60)
];
file_put_contents('/tmp/sensor.json', json_encode($data));
time_nanosleep(1, 0); // တိုင်း秒模拟一组数据
}
}
curl http://gitbox.net/api/data -fpeter ကဲ့သို့သော Simulated စားသုံးသူအဆုံးနှင့်အတူပေါင်းစပ်ပြီးပြည့်စုံသောစမ်းသပ်ကွင်းဆက်ကိုတည်ဆောက်နိုင်သည်။
လိုက်ဖက်တဲ့ပြ issue နာ - PHP ပတ် 0 န်းကျင်အားလုံးမှာ time_nanosleep () မှာအထူးသဖြင့် embedded ပတ် 0 န်းကျင်ဒါမှမဟုတ်အမွေအနှစ်တွေမှာပါ 0 င်သည်။
လက်တွေ့ကျသောတိကျမှုပြ problem နာ - operating system scheduleing တိကျမှုနှင့် ပတ်သက်. Time_Nanosleep () သည် စံနမူနာ nanosecond နှောင့်နှေးမှုများကိုအမြဲတမ်းမရရှိနိုင်ပါ။
uninwerterfulterible အန္တရာယ် : (microseconds အတွက်မကြာခဏဖုန်းခေါ်ဆိုမှုမကြာခဏခေါ်ဆိုမှုအဖြစ်) အလွန်နည်းပါးလာ (ထိုကဲ့သို့သောမကြာခဏဖုန်းခေါ်ဆိုမှု) မှာပရိုဂရမ်များသည်စနစ်အရင်းအမြစ်များကိုဖြစ်ပေါ်စေသည့်စနစ်အရင်းအမြစ်များကြောင့်ကြိုတင်ခန့်မှန်း။ မရသောအပြုအမူကိုဖြစ်ပေါ်စေနိုင်သည်။
PHP သည် အချိန်နှင့်တပြေးညီစနစ်ဖွံ့ဖြိုးတိုးတက်မှုအတွက် ဦး စားပေးဘာသာစကားမဟုတ်သော်လည်း developer များအား developer processing loops များတွင်အချိန်ပိုရရှိမှုကိုထိန်းချုပ်ရန်လွယ်ကူစွာထိရောက်သောနည်းလမ်းဖြစ်သည်။ ၎င်းသည်အခိုးအငွေ့, မဲရုံသို့မဟုတ်တိကျသောတွန်းအားသည်ဖြစ်စေ, ဤလုပ်ဆောင်မှုကိုအသုံးပြုခြင်းသည်အချိန်နှင့်တပြေးညီဒေတာလုပ်ဆောင်မှုစနစ်တည်ဆောက်သည့်အခါသင့်ကိုပိုမိုအဆင်ပြေစေနိုင်သည်။