我熟悉php-resque和其他用于处理后台作业的作业处理系统,但我认为它不能满足我的需要。
在这种情况下,我有一个传入的web服务请求,它需要对外部系统执行多个(2-4)独立的呼叫,并向客户端返回一个统一的响应。每个标注可能需要300-500 no,所以我希望每个标注并行执行,这样整个过程不需要超过500 no+/-总计。
我使用php-resque和其他系统的问题是,即使等待1秒就开始发出这些标注的时间太长了,我正在考虑另一种方法。
我的想法是:
当然,我们会为每个请求和整个过程实现一个超时.
有什么想法?我说错了吗?php能立即启动多个并行作业吗?
发布于 2012-10-08 05:32:39
您的计划应该是可行的,但是我认为您可以通过使用PHP过程控制函数来避免所有的数据库通信甚至轮询。
但是,您必须在PHP脚本中使用这些函数,因为.
http://www.php.net/manual/en/intro.pcntl.php
不应在web服务器环境中启用过程控制,如果在web服务器环境中使用任何过程控制功能,则可能会发生意外结果。
但是您的web服务器可以轻松地exec()
您的CLI脚本,这将完成所有的艰苦工作,返回这些任务的状态,等等。
发布于 2012-10-08 09:30:21
如果您的外部调用只是HTTP请求,则可以使用curl并执行多个请求。他们似乎完全满足了你的需要。
如果情况不一样,我可以强烈推荐吉尔曼。
如果您想弄脏您的手并编写您自己的守护进程,我建议跳过IPC函数,进行一些更高级别的操作,比如ZeroMQ,如果它们死了,也许可以使用监督员d重新启动它们。编写长期运行的PHP进程相对比较困难,因此您必须在构建过程时考虑到外部脚本将随机死掉,并准备优雅地处理它。
https://stackoverflow.com/questions/12722245
复制相似问题