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

workerman如何依次間隔10秒把指令發(fā)給客戶端,指令是變量,起始指令表示0001,結(jié)束指令0005,我如何在timer定時(shí)器中靈活運(yùn)用變量。

人世幾回傷往事

大家好,希望大家能幫我分析一下。workerman如何依次間隔10秒把指令發(fā)給客戶端,指令是變量包括起始指令與結(jié)束指令,我如何在timer定時(shí)器中靈活運(yùn)用變量。舉例說明,我這有5個(gè)指令, 分別是 0001,0002,0003,0004,0005我打算把這五個(gè)指令依次間隔10秒發(fā)給客戶端,我把定時(shí)器寫for循環(huán)里面,所有指令會(huì)同一時(shí)間發(fā)給客戶端,會(huì)造成丟數(shù)據(jù)和疊包,這不是我想要的。我用到了sleep,但是這也不是我想要的。我該怎么做比較好呀?或者大家有沒有別的好辦法呀?

2738 1 0
1個(gè)回答

six

幾個(gè)定時(shí)器就搞定了啊

Timer::add(10, function() use ($connection) {
    $connection->send('0001');
}, [], false);
Timer::add(20, function() use ($connection) {
    $connection->send('0002');
}, [], false);
Timer::add(30, function() use ($connection) {
    $connection->send('0003');
}, [], false);
Timer::add(40, function() use ($connection) {
    $connection->send('0004');
}, [], false);
Timer::add(50, function() use ($connection) {
    $connection->send('0005');
}, [], false);
  • 人世幾回傷往事 2020-06-11

    大佬,您好,事情是這么回事,但我如何不用for循環(huán),依次找出這幾個(gè)變量呀?我只知道起始變量0001,結(jié)束變量0005,另外三個(gè)變量是每次遞增1得到的呀。

  • six 2020-06-11

    上面就是沒用for循環(huán)啊

  • 人世幾回傷往事 2020-06-12

    大佬您好:但是我的指令數(shù)是不固定的 ,有可能是5位,有可能7位,有可能是不同的兩位數(shù),我不可能每次都寫死指令吧。目前有三個(gè)變量,就是$length=5,$start=0001,$end=0005,0001到0005依次遞增1,直到$end==0005,最后一次發(fā)送。

  • six 2020-06-12

    for($i=1;$i<=5;$i++) {
    Timer::add(10*$i, function() use ($connection, $i) {
    $connection->send('000' . $i);
    }, [], false);
    }

  • 人世幾回傷往事 2020-06-12

    大佬您好,只要用for循環(huán)就會(huì)同時(shí)發(fā)給客戶端的。我想到了用引用變量的方式,正在嘗試, 希望在send函數(shù)中能遞增1,當(dāng)?shù)扔?005后,停止調(diào)用。 不知道大佬在引用變量方便有啥好的建議?!颈?/p>

    class Mail
    {
    // 注意,回調(diào)函數(shù)屬性必須是public
    public function send($to, $content)
    {
    echo "send mail ...\n";
    }
    }

    $task = new Worker();
    $task->onWorkerStart = function($task)
    {
    // 10秒后發(fā)送一次郵件
    $mail = new Mail();
    $to = 'workerman@workerman.net';
    $content = 'hello workerman';
    Timer::add(10, array($mail, 'send'), array($to, $content), false);
    };
    // 運(yùn)行worker
    Worker::runAll();

  • six 2020-06-12

    上面的for循環(huán)代碼不會(huì)同時(shí)發(fā)送。

  • 人世幾回傷往事 2020-06-12

    大佬您好 您的時(shí)間不是同時(shí)發(fā)送,但是用for的話,會(huì)把指令同時(shí)輸出的呀

  • six 2020-06-12

    我for代碼里沒有輸出,只有發(fā)送

  • 人世幾回傷往事 2020-06-12

    哦哦 我試一試 呀 感激大佬【抱拳】

  • 人世幾回傷往事 2020-06-12

    大佬 您的方案 我試過了 可是依然不行呀 我只能發(fā)送一個(gè)指令給客戶端后,收到客戶端返回的消息并把客戶端返回的消息存入數(shù)據(jù)庫,存入成功后再發(fā)下一條指令啦,依次發(fā)到0005,然后停止發(fā)送。關(guān)于我這個(gè)新想法,大佬有啥建議嗎?

  • six 2020-06-12

    你這邏輯咋又變了,業(yè)務(wù)邏輯自己想吧,沒時(shí)間一點(diǎn)一點(diǎn)教你

  • 人世幾回傷往事 2020-06-12

    好的 好的 謝謝大佬

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