PHP တွင် proc_terminate function ကို proc_open ဖွင့်လှစ်ခြင်းလုပ်ငန်းစဉ်ကိုအဆုံးသတ်ရန်အသုံးပြုသည်။ operating system ၏အခြေခံစီမံခန့်ခွဲမှုစီမံခန့်ခွဲမှုယန္တရား၏ကွဲပြားခြားနားမှုများကြောင့် Windows နှင့် Linux Systems တွင် proc_terminate ၏စွမ်းဆောင်ရည်ကွဲပြားခြားနားမှုများလည်းရှိသည်။ ဤဆောင်းပါးသည် developer များနားလည်ရန်နှင့်၎င်းကိုမှန်ကန်စွာအသုံးပြုရန်ကူညီရန်ဤပတ်ဝန်းကျင်နှစ်ခုတွင်ဤပတ်ဝန်းကျင်နှစ်ခုတွင်အသေးစိတ်အချက်အလက်များကိုအသေးစိတ်လေ့လာသုံးသပ်လိမ့်မည်။
Proc_terminate ၏အဓိပ္ပါယ်သည်အောက်ပါအတိုင်းဖြစ်သည် -
bool proc_terminate ( resource $process [, int $signal = 15 ] )
$ process : process process process ကို proc_open မှတဆင့်ရရှိသောလုပ်ငန်းစဉ်အရင်းအမြစ်။
$ signal - လုပ်ငန်းစဉ်ကိုပို့တဲ့အချက်ပြမှုဟာ 15 ဖြစ်တယ်။
signal ကိုအောင်မြင်စွာပေးပို့ရန် function ကို မှန်ကန်စွာ ပေးပို့ရန် မှန်ကန်သည် ။
0 င်းဒိုးစနစ်၏လုပ်ငန်းစဉ်ပုံစံသည် Linux နှင့်ကွဲပြားသည်။
Windows တွင် Linux ကဲ့သို့သော Unix-signaling ယန္တရားမရှိပါ။
Proc_terminate သည် အမှန်တကယ်အားဖြင့် 0 င်းဒိုးရှိ terminateProcess api မှတစ်ဆင့်အဆုံးသတ်ရန်ဖြစ်စဉ်ကိုတွန်းအားပေးသည်။
signal parameter သည်များသောအားဖြင့် Windows တွင်လျစ်လျူရှုထားလေ့ရှိပြီးအချက်ပြမှုများကိုအတင်းအဓမ္မစေခိုင်းမှုအနေဖြင့်ကုသပေးသည်။
နမူနာကုဒ်:
<?php
$process = proc_open('ping -n 10 127.0.0.1', [
1 => ['pipe', 'w'],
2 => ['pipe', 'w'],
], $pipes);
sleep(2);
proc_terminate($process); // ဒီမှာ signal parameters တွေကိုဒီမှာမမှန်ကန်ပါ,တိုက်ရိုက်ရပ်စဲရပ်စဲ
proc_close($process);
?>
Windows တွင် Calling Proc_terminate တွင်အခြေခံအားဖြင့်အများအားဖြင့်သတ်ရန်အတင်းအကျပ်ခိုင်းစေခြင်းနှင့်အလားတူညီမျှသည်။
Linux System သည် Unix အချက်ပြမှုများကိုထောက်ပံ့သည်။ Proc_terminate ၏ $ signal parameter သည်အလွန်အရေးကြီးသည်။
ပုံမှန် signal sigterm (15) သည်ပုံမှန်အားဖြင့်ဖြစ်စဉ်ကိုတောင်းဆိုသည်။
Sigkill (9) သို့ signal ကိုပြောင်းလဲခြင်းဖြင့်လုပ်ငန်းစဉ်ကိုအသတ်ခံရနိုင်သည်။
လိုအပ်သည့်အတိုင်းအသုံးပြုရန်အသုံးပြုသူများကိုအခြားအချက်ပြမှုများ (ဥပမာ Sigt , Sightup စသည်တို့) ကိုပေးပို့ရန်ခွင့်ပြုပါ။
နမူနာကုဒ်:
<?php
$process = proc_open('sleep 30', [
1 => ['pipe', 'w'],
2 => ['pipe', 'w'],
], $pipes);
sleep(2);
proc_terminate($process, SIGTERM); // Elegant ရပ်စဲ
// ဖြစ်စဉ်ကိုတုံ့ပြန်မထားဘူးဆိုရင်,သငျသညျရပ်စဲအတင်းရန်ကြိုးစားနိုင်ပါတယ်
// proc_terminate($process, SIGKILL);
proc_close($process);
?>
Linux တွင် proc_terminate တွင် developer များကကွဲပြားခြားနားသောလုပ်ငန်းစဉ်ရပ်စဲမဟာဗျူဟာများကိုအကောင်အထည်ဖော်ရန်သတ်သတ်မှတ်မှတ်အချက်ပြမှုများကိုသတ်လွယ်စေနိုင်သည်။
သီးခြားထင်ရှားသော | ပြတင်းပေါက် | Linux |
---|---|---|
ထောက်ခံ signal အမျိုးအစားများ | အဘယ်သူမျှမ, signal parameters တွေကိုလျစ်လျူရှု | UNIX အချက်ပြချက်များ (SIGERM STC) ကိုထောက်ပံ့သည်။ |
လုပ်ငန်းစဉ်ရပ်စဲနည်းလမ်း | အတင်းအဓမ္မဆုံး (turninateprocess) | သတ်မှတ်ထားသောအချက်ပြမှုကိုပေးပို့ပါ, ကြော့ exit ကိုပံ့ပိုးပါ |
လုပ်ငန်းစဉ်တုံ့ပြန်မှု၏ပြောင်းလွယ်ပြင်လွယ် | မပံ့ပိုးပါ | အချက်ပြမှုများအပေါ်အခြေခံပြီးတုံ့ပြန်မှုထောက်ခံမှု |
အကြံပြုထားသောအသုံးပြုမှုအခြေအနေများ | လျင်မြန်စွာလုပ်ငန်းစဉ်ရပ်ဆိုင်း | ယဉ်ပါးသို့မဟုတ်အတင်းအဓမ္မလျှော့ချရန်လိုအပ်သည့်ပြောင်းလွယ်ပြင်လွယ်ထိန်းချုပ်မှု |
Developer များကပြတင်းပေါက်များအပေါ်အယုံအကြည်ကင်းမဲ့ရန်အချက်ပြ parameters များကိုမှီခိုအားပြရန် Cross-platform ကိုတီထွင်သောအခါဤကွဲပြားခြားနားမှုများကိုဂရုပြုသင့်သည်။
Windows နှင့် Linux Systems များတွင် proc_terminate ၏စွမ်းဆောင်ရည်တွင်သိသာထင်ရှားသောကွဲပြားခြားနားမှုများရှိသည်။ 0 င်းဒိုးစနစ်များသည် Unix အချက်ပြယန္တရားများကိုမထောက်ခံပါ။ ဤအချက်သည် Cross-plat ပလက်ဖောင်း PHP process စီမံခန့်ခွဲမှုကုဒ်ရေးသားခြင်းအတွက်မရှိမဖြစ်လိုအပ်သည်။