在PHP中并行发送多个xml请求?可能?

问题描述:

我有一个脚本,可以调用远程服务器上的XML API。目前我的脚本串行发送10个请求到远程服务器。它在发送下一个请求之前完全处理每个请求。目前,这对我的服务器来说是一个巨大的瓶颈,因为每个API请求每个请求可能需要一秒钟。由于大多数时间都是等待远程服务器响应,所以我想知道是否/如何并行发送请求,以便所有10个请求都使用相同的一秒延迟而不是十秒钟的等待时间...在PHP中并行发送多个xml请求?可能?

我想过使用系统命令调用脚本10次并在后台运行它们以有效地创建10个进程,但我不确定这是否是最好的方法。我想这个问题可能以前已经解决了。

是的,你可以使用卷曲。见here in the manual。您可以使用non-blocking I/O

如果您可以使用系统命令,那么它是可能的。

  1. 创建PHP脚本是什么做的请求,并(共10个文件)写入响应数据文件
  2. 写一个PHP脚本调用系统命令来运行高于10 PHP脚本,然后等待所有执行完成
  3. 从文件中读取响应数据

PHP不支持线程,但是你用curl_multi

这将并行发送您的请求。这是一个很好的解决方案,因为大部分时间您都在网络上等待。

如果你仔细设计(使用URL的队列,问题,当每一个被做了处理回调),您将不必等到最长的请求完成

你在找什么可能是异步调用。根据您使用的版本,可以在PHP中使用几种不同的方法。关于这个问题的一些很好的信息: Asynchronous PHP calls?