PHP 中的异步处理或消息队列 (CakePHP) [已关闭]
我正在CakePHP中构建一个网站,处理通过XML-RPC API和Web前端上传的文件。文件需要由ClamAV扫描,需要生成缩略图等。所有需要一些时间的资源密集型工作,用户不必等待。因此,我正在研究一般的PHP和CakePHP的异步处理。
我遇到了CakePHP的MultiTask插件,看起来很有前途。我还遇到了各种消息队列实现,例如dropr和beanstalkd。当然,我还需要某种后台流程,可能是使用某种 Cake Shell 实现的。我看到 MultiTask 使用 PHP_Fork 来实现多线程 PHP 守护程序。
我需要一些关于如何以最佳方式将所有这些部分组合在一起的建议。
- 用PHP编写一个长时间运行的守护进程是一个好主意吗?我应该注意什么?
- 外部消息队列实现的优势是什么?多任务插件不使用外部消息队列。它使用MySQL表来存储任务。
- 我应该使用什么消息队列?滴水?豆茎?别的?
- 我应该如何实现后端处理器?分叉PHP守护进程是一个好主意还是只是自找麻烦?
我目前的计划是要么使用MultiTask插件,要么将其编辑为使用beanstald而不是它自己的MySQL表实现。队列中的作业可以简单地由任务名称和参数数组组成。PHP 守护程序将监视传入的作业,并将它们传递给它的子线程之一。将简单地使用给定的参数执行 CakePHP 任务。
对此有任何意见,建议,评论,陷阱或火焰吗?