我正在创建一个聊天机器人,我让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进程的情况下解决这个问题?
喝彩!