php

时间:2017-02-28 17:00:12

标签: php

我正在创建一个聊天机器人,我让php工作人员从消息队列中获取传出消息。我从有效负载(从队列)获取一组消息。我想发送滞后的消息,以模仿'打字'。     

while (true) {
    $messages = pickMsgFromQueue();
    sendMessagesWithDelay($messages);
}

function sendMessagesWithDelay(array $messages) {
    if (empty($messages)) {
        return;
    }

    sendMessage(shift($messages));
    sleep(1); // This will take 99.9 % of script time obviously
    sendMessagesWithDelay($messages);
}

function sendMessage($message) {
    // some curl call;
}

问题是,机器人工作者大多数时间都会坐在sleep()函数上,我现在唯一的解决办法就是让很多工人同时运行,这样一条新消息队列中的队列尽快被提起。

有没有一种很好的方法可以在没有多线程或启动另一个php进程的情况下解决这个问题?

喝彩!

0 个答案:

没有答案