Php 运行Zend队列接收器的基础结构
我有一个简单的消息队列设置,并使用对象继承机制运行。我用的是后端。我感兴趣的是将其用作作业队列,以便安排稍后处理的事项。这些工作不需要立即进行,但应该尽早进行 是否有最佳做法/标准方法来设置基础结构以运行作业?我理解从队列接收消息的代码,但我不太清楚的是如何运行执行该接收的程序。在命令行上接收n条消息的cron,每分钟运行一次?触发多个web请求的cron,每个web请求都运行接收方脚本?还有别的吗Php 运行Zend队列接收器的基础结构,php,zend-framework,cron,zend-queue,Php,Zend Framework,Cron,Zend Queue,我有一个简单的消息队列设置,并使用对象继承机制运行。我用的是后端。我感兴趣的是将其用作作业队列,以便安排稍后处理的事项。这些工作不需要立即进行,但应该尽早进行 是否有最佳做法/标准方法来设置基础结构以运行作业?我理解从队列接收消息的代码,但我不太清楚的是如何运行执行该接收的程序。在命令行上接收n条消息的cron,每分钟运行一次?触发多个web请求的cron,每个web请求都运行接收方脚本?还有别的吗 切向奖金问题。如果我使用Zend_Db运行其他查询,消息队列查询会被视为该事务的一部分吗?您可以
切向奖金问题。如果我使用Zend_Db运行其他查询,消息队列查询会被视为该事务的一部分吗?您可以像线程池一样执行。创建一个命令行php脚本来处理接收。它应该由一个shell脚本启动,该脚本在进程死亡时自动重新启动进程。如果shell脚本已在运行,则不应启动该进程(使用$pid.running文件或类似文件)。让cron每1-10分钟运行几次。这应该能很好地处理接收问题 我不会让cron触发web请求,除非您的cron出于某种奇怪的原因位于另一台服务器上 另一种使用这种方法的方法是让一些后台进程创建数据,web用户在自然浏览站点时使用这些数据。报表生成器可能是这样工作的。公司范围的报告可供所有用户使用,但您不希望所有用户都生成此数据库/时间密集型报告。因此,您可以创建一个队列,并一次处理一个队列,以消除重复项。准备好后,所有用户都可以查看报告 zend db甚至不像其他zend_db查询那样使用相同的连接。当然,最好的办法是做一个简单的测试 编辑 cron中的多行用于并发。每行表示池的一个工作线程。我不清楚,您不希望pid作为标识符,而是希望将其作为参数传递
- /home/byron/run_queue.sh进程1
- /home/byron/run_queue.sh Process2
- /home/byron/run_queue.sh Process3
- 创建$process.running文件
- 启动php进程。阻塞/等待,直到完成
- 删除$process.running文件李>
如果队列为空,php脚本将立即退出,并通过cron的nex调用再次启动。后续问题;(如果这是天真/明显的,则表示歉意)。你是在建议我1。编写一个PHP程序来接收消息;2.编写一个shell脚本,查找由PHP脚本?创建的$pid.running文件?;3.如果找不到$pid.running文件,请启动PHP脚本,然后退出?;4.在crontab中有许多行用于启动shell脚本。其中一些将运行,请参阅$pid.running文件并退出,但通过每分钟运行多次尝试,可以确保程序定期持续运行/重新运行;我有它,还是我遗漏了什么?我也忘了,你也可以通过查看文件的创建日期来设置正在运行的文件的超时。。你需要让你的php脚本只处理x个条目,然后退出,这样你就知道运行最长的脚本需要多长时间。感谢您花时间为我解释这一点,在新手层次的细节!