国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

PHPsocket.io中使用定時(shí)器

大王
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Workerman\Worker;
use Workerman\Lib\Timer;
use PHPSocketIO\SocketIO;

$io = new SocketIO(81);
// 當(dāng)有客戶端連接時(shí)
$io->on('connection', function($socket)use($io){
    // 獲取鏈行股價(jià)行情事件回調(diào)函數(shù)
    $socket->on('get_price', function($msg)use($io){
        // 一個(gè)定時(shí)器,每x秒執(zhí)行一次
        $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();

這樣寫,好像每個(gè)用戶鏈接后發(fā)送get_price都會(huì)新增了一個(gè)定時(shí)器(不確定是不是,自己測試的時(shí)候打開多個(gè)頁面,客戶端接收的數(shù)據(jù)有時(shí)候一下子返回多個(gè))。。有什么辦法可以讓所有用戶只共用一個(gè)定時(shí)器嗎?

3769 2 0
2個(gè)回答

walkor 打賞

在$io->on('workerStart', function(){});里添加定時(shí)器,也就是在進(jìn)程啟動(dòng)后后添加,這樣就是一個(gè)

  • zwc2004 2018-11-15

    具體是怎么添加呢,$io->emit('send_prices', $data)添加在什么地方呢

大王

感謝walkor回答!

  • zwc2004 2018-11-15

    我也遇到你說的客戶端接收的數(shù)據(jù)有時(shí)候一下子返回多個(gè),但是回答的“在$io->on('workerStart', function(){});里添加定時(shí)器”沒看懂呀,能貼代碼出來嗎,感謝

  • 大王 2018-12-24

    @4963:$io->on('workerStart', function(){Timer::add(1, function(){echo 1;});});

年代過于久遠(yuǎn),無法發(fā)表回答
??