在作业完成时发出通知响应

时间:2016-09-27 17:56:23

标签: php symfony doctrine beanstalkd

我正在使用带有Pheanstalk bundle和Doctrine的Symfony framework3。我创建了将数据发送到beanstalk的事件。不同服务器上的其他SF应用程序执行作业并更新第一个SF应用程序上的通知状态以完成。如何检查状态何时更新,并设置如下警告:

http://byrobin.nl/store/wp-content/uploads/sites/4/2016/03/local.png

我可以创建一个具有不定循环并检查状态更新的命令,也许是preUpdate上的监听器?此外,我在运行检查和执行beanstalk作业的命令时遇到了同样的问题。在开发模式下,我手动运行它,但我尝试不定循环像while(true)但它加载我的缓冲区和崩溃。我在想每分钟或两分钟的cron工作?这两个问题的最佳解决方案是什么?有什么建议吗?

1 个答案:

答案 0 :(得分:0)

1)使用WebSockets会很好,因为它不涉及while(true)循环。在提交任务以进行处理之后,可以通过前端打开websocket。作业完成处理后,它会通知服务器端的websocket,以便在前端的套接字上重新传递信息。

2)另一种选择是提交一条消息,并在params中命名匿名管(根据时间和一些前缀创建一个唯一的名称),工人需要将答案放在哪里。在提交作业之前,您在beanstalkd上订阅了匿名频道,然后提交作业,作业完成后会将答案发布到电子管上。由于已有订户在那里它将保留作业并处理它,然后删除它,管也被删除。