如何在后台保留进程 运行? - Laravel

How to keep a process running in the background? - Laravel

我正在使用 php-imap 包,我想收听收到的电子邮件。

使用 php-imap 实现此目的的方法是调用 idle() 函数,如下所示:

$emailFolder->idle(function (Message $email){
   // dispatch event
});

问题是 idle() 函数永远不会完成 运行ning 并且永远不会执行其余代码。

我需要为每个用户调用 idle() 函数,因为我必须监听所有用户的传入电子邮件。

我尝试为每个用户设置一个作业并将其分派到队列中,但是作业永远不会结束(并且由于用户数量发生变化,工作人员数量也必须发生变化),我可以'想办法在需要时停止作业。

我还需要一种方法来停止为特定用户执行 idle() 函数,例如,如果用户删除了其帐户。

有没有办法运行后台的那段代码,不干扰代码执行,并有可能停止进程的特定实例的执行?

我找到了解决方案。

这里是:https://github.com/Webklex/php-imap/issues/206