လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PHP asynchronous Programming အလေ့အကျင့် - တစ်ပြိုင်နက်တည်းစွမ်းဆောင်ရည်ကိုတိုးတက်စေရန် Event Loops နှင့် Callbacks ကိုအသုံးပြုခြင်း

PHP asynchronous Programming အလေ့အကျင့် - တစ်ပြိုင်နက်တည်းစွမ်းဆောင်ရည်ကိုတိုးတက်စေရန် Event Loops နှင့် Callbacks ကိုအသုံးပြုခြင်း

M66 2025-10-07

PHP asynchronous programming ၏ခြုံငုံသုံးသပ်ချက်

ရိုးရာ PHP ပရိုဂရမ်စနစ်တွင် code ကိုပုံမှန်အားဖြင့်ကွပ်မျက်ခံရလေ့ရှိသည်။ ပြတ်တောင်းပြတ်တောင်းအစီအစဉ်သည်အဓိကအကြောင်းအရာများကိုပိတ်ဆို့ခြင်းမပြုဘဲအလုပ်မျိုးစုံကိုတစ်ပြိုင်နက်တည်းလည်ပတ်ရန်ခွင့်ပြုထားသည်။

PHP ၏ allynchronous programming ကို Event Loops နှင့် Callback funvents များမှတဆင့်အကောင်အထည်ဖော်နိုင်သည်။ ဤယန္တရားကိုအလွန်အမင်းတစ်ပြိုင်နက်တည်းဆိုသည့်ကွန်ယက် 0 န်ဆောင်မှုများ, အချိန်နှင့်တပြေးညီစနစ်များနှင့်အချိန်ကိုက်ခြင်းများတွင်ကျယ်ကျယ်ပြန့်ပြန့်အသုံးပြုသည်။

Libev ကို သုံး. Event Loops ကိုအကောင်အထည်ဖော်ပါ

Libev သည် Excending လုပ်ခြင်းနှင့်အစပျိုးလိုက်သောအခါနားထောင်နိုင်သည့်ထိရောက်သောကွင်းဆက်ယန္တရားကိုထောက်ပံ့ပေးသော PHP ၏စာကြည့်တိုက်တစ်စောင်ဖြစ်သည်။ Libev ကိုစတင်သုံးရန်သင်ပထမ ဦး ဆုံး extension ကို install လုပ်ရန်လိုအပ်ပြီးအောက်ပါကုဒ်နံပါတ်နှင့်အတူဖြစ်ရပ် loop ကိုစတင်ရန်လိုအပ်သည်။

 require 'vendor/autoload.php';

$loop = new \LibEv\EventLoop();

အထက်ဖော်ပြပါကုဒ်သည်ကွန်ယက်ဖြစ်ရပ်များ,

ပြတ်တောင်းပြတ်တောင်းကွန်ယက်ပရိုဂရမ်းမင်းဥပမာ

အောက်ပါဥပမာသည် Libev ကိုအသုံးပြုနည်းကို Main Client Concernous ဝက်ဘ်ဆာဗာတစ်ခုဖန်တီးရန် Libev ကိုမည်သို့အသုံးပြုရမည်ကိုပြသသည်။

 use \LibEv\EventLoop;
use \LibEv\IO\Stream\Server;

$loop = new EventLoop();

$server = new Server($loop, '127.0.0.1', 8080);
$server->on('connection', function(Server $server, Stream $client) {
  echo 'New client connected';
});

$loop->run();

ဤဥပမာရှိဆာဗာသည် port 8080 နှင့်ဆက်သွယ်မှုအသစ်တစ်ခုကိုရှာဖွေတွေ့ရှိသည်နှင့်တစ်ပြိုင်နက် callback function ကိုလုပ်ဆောင်သည်။ တစ်ချိန်တည်းမှာပင်ထိုအဖြစ်အပျက်သည်ကွင်းဆက်ဆက်လက်လုပ်ကိုင်နေပြီးတစ်ပြိုင်တည်းဆက်သွယ်မှုမျိုးစုံကိုတစ်ပြိုင်တည်းထုတ်ယူခြင်းကိုအထောက်အကူပြုသည်။

asynchronous timer ဥပမာ

ပြတ်တောင်းပြတ်တောင်းအစီအစဉ်တွင်အချိန်ဇယားများ၌ Timers များသည်အလွန်အသုံးများသောလုပ်ဆောင်မှုတစ်ခုဖြစ်သည်။ ၎င်းသည်အလိုအလျောက်ခေါ်ဆိုမှုများကိုသတ်မှတ်ထားသောအချိန်ကြားကာလအပြီးတွင်အစပျိုးရန်ခွင့်ပြုသည်။ အောက်ပါဥပမာသည် Libev ကို သုံး. Periodic Timer ကိုမည်သို့ဖန်တီးရမည်ကိုပြသသည်။

 use \LibEv\EventLoop;
use \LibEv\Timer;

$loop = new EventLoop();

$timer = new Timer($loop, 1.0, true); // အခြားတိုင်း 1 စက္ကန့်အတွင်းတစ်ကြိမ် Execute
$timer->on('timeout', function(Timer $timer) {
  echo 'Timer has timed out';
});

$loop->run();

ဤအချိန်ဇယားသည်ဒုတိယအကြိမ်ပြန်ခေါ်ချက်ကိုဒုတိယအကြိမ်ပြန်ခေါ်ပြီး log refresh, အရင်းအမြစ်စောင့်ကြည့်လေ့လာခြင်းသို့မဟုတ်အလုပ်စီစဉ်ခြင်းစသည့် Periodic လုပ်ငန်းများကိုလုပ်ဆောင်ရန်အသုံးပြုနိုင်သည်။

အကျဉ်းချုပ်

Event Loops နှင့် Callback ယန္တရားများကိုအသုံးပြုခြင်းအားဖြင့် PHP သည်အမှန်တကယ်ပြတ်တောင်းပြတ်တောင်းအစီအစဉ်များကိုအကောင်အထည်ဖော်နိုင်သည်။ Libev Extension ၏အကူအညီဖြင့် developer များက at developer များကပြတ်တောင်းပြတ်တောင်းကွန်ယက်ဆာဗာများ, အချိန်ကောင်းလုပ်ငန်းများနှင့်စိတ်ကြိုက်ပြုလုပ်မည့်နေရာများနှင့်ဓလေ့ထုံးတမ်းဆိုင်ရာဖြစ်ရပ်များနှင့်အလွယ်တကူပြုလုပ်နိုင်သည်။

မကြာသေးမီ ဆောင်းပါးများ