1

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

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

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

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

4

2 回答 2

1

PHP 不能做传统意义上的线程,所以你想要做的事情并不是你想的那样。您已经在 中查看了(可能)最好的解决方案pcntl_fork,但这仍然不是真正的异步。您是否考虑过使用 cron 来代替?

于 2013-01-09T17:53:05.967 回答
1

http://php.net/pthreads

http://github.com/krakjoe/pthreads

github 上的示例......并包含在分发中,使用 github 中的代码,它包含尚未发布的修复。

于 2013-01-09T21:42:46.640 回答