当前位置: 首页 > 工具软件 > PHPSocket.IO > 使用案例 >

php socket 定时器,PHPsocket.io中使用定时器

申屠英韶
2023-12-01

require_once __DIR__ . '/vendor/autoload.php';

use Workerman\Worker;

use Workerman\Lib\Timer;

use PHPSocketIO\SocketIO;

$io = new SocketIO(81);

// 当有客户端连接时

$io->on('connection', function($socket)use($io){

// 获取链行股价行情事件回调函数

$socket->on('get_price', function($msg)use($io){

// 一个定时器,每x秒执行一次

$time_interval = 7;

Timer::add($time_interval, function(){

global $io,$socket;

//链接redis

$redis_host = "127.0.0.1";

$redis_port = 6379;

$redis = new Redis();//使用phpredis(比predis性能好)

$res = $redis->connect($redis_host, $redis_port);

if($res){

$rs = $redis->get("lhang_ticker");

$data = json_decode($rs,true);

}

$io->emit('send_prices', $data);

});

});

});

Worker::runAll();

这样写,好像每个用户链接后发送get_price都会新增了一个定时器(不确定是不是,自己测试的时候打开多个页面,客户端接收的数据有时候一下子返回多个)。。有什么办法可以让所有用户只共用一个定时器吗?

 类似资料: