如何有效地运行同步网络请求?

时间:2013-01-09 17:51:18

标签: php asynchronous

我有一个用PHP编写的网络应用程序,我使用Symfony2作为核心框架。

我需要每10分钟左右定期运行数千个小型网络请求,并且我正在尝试找到异步运行这些作业的最佳解决方案,而不会出现冲突或加倍。

目前我有一个非常基本且不优雅的解决方案,其中cron作业执行PHP命令脚本。该命令同步处理数据库中的每个条目并发送网络请求。当该请求完成(或失败)时,它将移至下一个请求。当迭代遍历所有条目时,它存在,从cron作业再次执行。

对于重写,我已将php-resquepcntl_fork视为并行运行作业的解决方案,从而显着加快了执行速度。我还看过从PHP运行多个非阻塞套接字请求,但到目前为止,它更喜欢孤立作业的简单性。

2 个答案:

答案 0 :(得分:1)

PHP无法在传统意义上进行线程化处理,因此您尝试做的事情并非以您正在思考的方式进行。您已经在pcntl_fork中查看了最佳解决方案(可能),但这仍然不会真正异步。您是否考虑过使用cron来完成此任务?

答案 1 :(得分:1)

http://php.net/pthreads

http://github.com/krakjoe/pthreads

关于github的例子......并包含在发行版中,使用github中的代码,它包含尚未发布的修补程序。