နိဒါန်း
မျက်မှောက်ခေတ်ဝက်ဘ်လျှောက်လွှာဖွံ့ဖြိုးတိုးတက်မှုတွင်စွမ်းဆောင်ရည်နှင့်တုန့်ပြန်မှုနှုန်းပိုမိုများပြားလာသည်။ Multi-process သည်တစ်ပြိုင်နက်တည်းလုပ်ဆောင်မှုကိုစနစ်တကျစွမ်းဆောင်နိုင်စွမ်းကိုတိုးတက်စေရန်ထိရောက်သောနည်းလမ်းတစ်ခုအဖြစ်ကျယ်ကျယ်ပြန့်ပြန့်အသုံးပြုသည်။ PHP ကိုယ်တိုင်သည်အဓိကအားဖြင့်တစ်ပြိုင်တည်းချိန်ကိုက်ခြင်းကိုပိတ်ဆို့ခြင်းကိုအသုံးပြုသော်လည်း SWoole ကဲ့သို့သောစွမ်းဆောင်ရည်မြင့်မားသောတိုးချဲ့မှုများဖြင့်တစ်ပြိုင်တည်းလုပ်ဆောင်နိုင်မှုကိုအလွယ်တကူရရှိနိုင်သည်။ ဤဆောင်းပါးသည် PPP စီမံကိန်းများအတွက် PHP စီမံကိန်းများသို့တိုးချဲ့ရန် SWOOLE ကို PHP စီမံကိန်းများသို့တိုးချဲ့ရန်မည်သို့အသုံးပြုရမည်ကိုအသေးစိတ်ဖော်ပြထားသည်။
Swoole ဆိုတာဘာလဲ။
SWOPE သည်စွမ်းဆောင်ရည်မြင့်မားသောစွမ်းဆောင်ရည်မြင့်ကွန်ယက်ဆက်သွယ်ရေးမူဘောင်တစ်ခုဖြစ်ပြီး Coroutines, Asynchronous IO, PHP ဘာသာစကားများအတွက် coroutinchronous IO, ၎င်း၏ဒီဇိုင်းမှလှုံ့ဆော်မှုသည် PHP ကိုရိုးရာပိတ်ဆို့ခြင်း mode ကိုဖြတ်သန်းရန်ခွင့်ပြုသည့် node.js နှင့် Libevent မှလာသည်။
PHP ၏ Multi-process processing ယန္တရား
PHP သည်များသောအားဖြင့် web server ပေါ်တွင်အသုံးပြုလေ့ရှိပြီးတစ် ဦး တည်းသောချည်, ထပ်တူပြုခြင်းအပြောင်းအလဲစနစ်နှင့်သက်ဆိုင်သည်။ သို့သော် pcntl_fork () `` သို့မဟုတ် SWOOLE ကဲ့သို့သောတိုးချဲ့စာကြည့်တိုက်များကဲ့သို့ခေါ်ဆိုခြင်းဖြင့်လုပ်ငန်းစဉ်ဘာသာစကားပေါင်းစုံစွမ်းရည်များကိုပြုလုပ်နိုင်သည်။ Multi-process processing ပြုလုပ်ခြင်းသည်တစ်ပြိုင်နက်တည်းလည်ပတ်ရန်လွတ်လပ်သောကလေးဖြစ်စဉ်များအတွက်အလုပ်များစွာကိုတာဝန်ယူသည်။
PHP Multi-process concurrent processing ကိုအကောင်အထည်ဖော်ရန်အဆင့်များ
1 ။ SWOOLE extension ကို install လုပ်ပါ
ပထမ ဦး စွာသင်၏ပတ်ဝန်းကျင်တွင် SWOOLE extension ကိုသေချာအောင်လုပ်ရန်လိုအပ်သည်။ ၎င်းကိုအောက်ပါ command ဖြင့်ထည့်သွင်းနိုင်သည်။
$ pecl install swoole
2 ။ ကလေးဖြစ်စဉ်ကိုဖန်တီးပါ
SWOOLE သည် SWOOLE \ PRIFT` ၏သင်တန်းကိုကလေးဖြစ်စဉ်များကိုလွယ်ကူစွာဖန်တီးရန်ဖြစ်သည်။ ဒီနေရာမှာအခြေခံဥပမာတစ်ခုပါ။
<?php
use Swoole\Process;
$process = new Process(function(Process $worker) {
// subprocess execution ယုတ္တိဗေဒ
echo "လက်အောက်ခံPID:" . $worker->pid . PHP_EOL;
$worker->exit(); // လက်အောက်ခံ退出
});
$pid = $process->start(); // 启动လက်အောက်ခံ
echo "မိဘလုပ်ငန်းစဉ်PID:" . $pid . PHP_EOL;
Process::wait(); // 等待လက်အောက်ခံ退出
3 ။ လုပ်ငန်းစဉ်ဆက်သွယ်ရေးကိုအကောင်အထည်ဖော်ပါ
လုပ်ငန်းစဉ်များအကြားဒေတာဖလှယ်မှုသည် Multi-process programming ၏အရေးကြီးသောအပိုင်းဖြစ်သည်။ SWOPE သည် Pipelines နှင့်အခြားနည်းလမ်းများမှတဆင့်မိဘ - ကလေးဖြစ်စဉ်များအကြားဆက်သွယ်မှုကိုထောက်ခံသည်။ ပိုက်လိုင်းဆက်သွယ်ရေးကိုအသုံးပြုခြင်း၏ဥပမာတစ်ခုမှာဤတွင်ဖြစ်သည်။
<?php
use Swoole\Process;
$process = new Process(function(Process $worker) {
$data = $worker->read(); // 从管道中读取မိဘလုပ်ငန်းစဉ်发送的数据
echo "လက်အောက်ခံ收到数据:" . $data . PHP_EOL;
$worker->write("Hello, I'm child process");
});
$pid = $process->start(); // 启动လက်အောက်ခံ
$process->write("Hello, I'm parent process"); // မိဘလုပ်ငန်းစဉ်写入数据
$data = $process->read(); // မိဘလုပ်ငန်းစဉ်读取လက်အောက်ခံ返回的数据
echo "မိဘလုပ်ငန်းစဉ်收到数据:" . $data . PHP_EOL;
Process::wait(); // 等待လက်အောက်ခံ退出
အကျဉ်းချုပ်
SWOOLE extension ဖြင့် PHP သည်ရိုးရာပိတ်ဆို့ခြင်းပိတ်ဆို့ခြင်းနှင့်စနစ်စွမ်းဆောင်ရည်ကိုချိုးဖောက်ခြင်းနှင့်စနစ်စွမ်းဆောင်ရည်ကိုမြှင့်တင်ရန်အတွက် PHP သည် Multi-process concurner processing ကိုအလွယ်တကူအကောင်အထည်ဖော်နိုင်သည်။ အထက်ပါနိဒါန်းမှတစ်ဆင့်ကျွန်ုပ်တို့သည်ကလေးသူငယ်များ၏အခြေခံအဆောက်အအုံများဖန်တီးမှုနှင့်လုပ်ငန်းစဉ်ဆိုင်ရာဆက်သွယ်ရေးနှင့်လုပ်ငန်းစဉ်ဆိုင်ရာဆက်သွယ်ရေးကိုလေ့လာခဲ့သည်။ SWOSE သည်ပြောင်းလွယ်ပြင်လွယ် api ကိုပေးရုံသာမကစွမ်းဆောင်ရည်ကောင်းများကိုထိန်းသိမ်းထားသည်။