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

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都会新增了一个定时器(不确定是不是,自己测试的时候打开多个页面,客户端接收的数据有时候一下子返回多个)。。有什么办法可以让所有用户只共用一个定时器吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值