我的需求是每隔一段时间查询数据库,然后推送给所有人
代码类似如下:
while(true){
$sql ="select 1+1";
$count=$mysql->query($sql);
Gateway::sendToAll(json_encode($count));
sleep(1000);
}
我现在用websocket的onMessage来写这个的话,但是他是每个客户端连接上来都要开一份这个代码在运行。
如何才能实现只运行一个代码,所有客户都能接受到啊。。
我试着在start_gateway写定时器,可惜使用sendToAll就报错。。
\Workerman\Lib\Timer::add(2, function() {
\GatewayWorker\Lib\Gateway::sendToAll('1111');
});
gateway只管网络io,业务逻辑请在businessworker中写。
可以在businessworker->onWorkerStart里面写,如果只想在其中一个进程运行,就判断下$businessworker->id,比如只在$businessworker->id===0的进程中运行
打开start_businessworker.php
合适的位置加上
哈哈。我刚弄得这个啊,在想如何只在一个进程中进行呢,你就告诉我答案了,谢谢老板
不客气
顺便问下,在start_businessworker.php这里可以使用\GatewayWorker\Lib\Db吗
看手册,好像是不允许
可以