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

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

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

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

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

開始的時候我是這么用的,看下代碼

<?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ā)來消息:".$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í)行定時器任務(wù)?".time()."?n"; ????}); });  $serv-&gt;start();

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

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

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