swoole的定時(shí)器怎么應(yīng)用

swoole的定時(shí)器怎么應(yīng)用

swoole提供了類似JavaScript的setInterval/setTimeout異步高精度定時(shí)器,粒度為毫秒級(jí)。使用也非常簡(jiǎn)單。

swoole中提供了一個(gè)定期器的用法? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (推薦學(xué)習(xí): swoole視頻教程

$server->tick(1000,?function()?use?($server,?$fd)?{???????? ????$server->send($fd,?"hello?world"); ????});

開(kāi)始的時(shí)候我是這么用的,看下代碼

<?php $serv = new SwooleServer("0.0.0.0", 9501);  $serv->set(array( ????'worker_num'?=&gt;?1,????//worker?process?num ));  $serv-&gt;on('connect',?function?($serv,?$fd){ ????echo?"客戶端?".$fd."連接成功?n"; }); $serv-&gt;on('receive',?function?($serv,?$fd,?$reactor_id,?$data)?{ ????echo?"客戶端?".$fd."發(fā)來(lái)消息:".$data."n"; ????$serv-&gt;send($fd,?'Swoole已經(jīng)介紹到您發(fā)送的消息:?'.$data); }); $serv-&gt;on('close',?function?($serv,?$fd)?{ ????echo?"客戶端?{$fd}關(guān)閉連接n"; });  $serv-&gt;on('WorkerStart',?function?($serv,?$worker_id){ ????$serv-&gt;tick(2000,?function(){ ????????echo?"執(zhí)行定時(shí)器任務(wù)?".time()."?n"; ????}); });  $serv-&gt;start();

開(kāi)始使用定時(shí)器的時(shí)候我放到了 onWorkStart 中執(zhí)行,這樣做的話可以保證在單個(gè)worker進(jìn)程的情況下定時(shí)器可以正常運(yùn)行,但是對(duì)于swoole來(lái)說(shuō)讓它單進(jìn)程工作顯然辱沒(méi)了它的 “才華” ,于是我將 work_num 設(shè)置為2,然后意外就發(fā)生啦,如圖

swoole的定時(shí)器怎么應(yīng)用

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊7 分享