PHP 是否支持 bash(分叉)中的与号之类的东西?假设我想同时在 2 个网页上使用 cURL,所以脚本不必等待第一个 cURL 命令完成,如何在 PHP 中实现这一点?在 bash 中是这样的:
curl www.google.com &
curl www.yahoo.com &
wait
PHP 是否支持 bash(分叉)中的与号之类的东西?假设我想同时在 2 个网页上使用 cURL,所以脚本不必等待第一个 cURL 命令完成,如何在 PHP 中实现这一点?在 bash 中是这样的:
curl www.google.com &
curl www.yahoo.com &
wait
PHP 是否支持 bash(分叉)中的与号之类的东西?
不,请参阅其他答案,尽管我确实指出 PCNTL 扩展名仅适用于 UNIX。
...如何在 PHP 中实现这一点?*
cURL 支持同时运行多个下载。
您可以使用popen
或proc_open
打开一个进程并让它在后台运行,但是没有像 for 那样对后台操作的语言支持bash
(无论如何,它是为运行任务而设计的;PHP 是为编写脚本而设计的)。
使用 proc_open,您可以proc_get_status
知道进程何时终止。恐怕没有wait
同等的。
如果您真的愿意,您可以编写异步方法,但工作量很大,而且如果您使用 PHP,这可能是一个糟糕的设计理念。
某种排队机制通常是可取的。Gearman 是您可以使用的开源队列机制。我还有一篇关于 Zend Server Job Queue 的博文,讨论了异步运行任务你排队吗?Zend 服务器作业队列简介。
您还可以使用 Zend Framework Queuing 类之类的东西来实现一些异步工作。 Zend_Queue