【发布时间】:2014-05-30 09:53:43
【问题描述】:
我想使用 PHP 从服务器 A 向服务器 B 发出并行请求。 Curl Multi Handle 和 Http Pooling 中哪个是最好的方法。
这两者的优缺点是什么。
请给我建议一种在性能、内存消耗、CPU 使用率方面最好的优化方式。
【问题讨论】:
标签: php curl httprequest curl-multi
我想使用 PHP 从服务器 A 向服务器 B 发出并行请求。 Curl Multi Handle 和 Http Pooling 中哪个是最好的方法。
这两者的优缺点是什么。
请给我建议一种在性能、内存消耗、CPU 使用率方面最好的优化方式。
【问题讨论】:
标签: php curl httprequest curl-multi
与标准 CURL 命令相比,PHP 确实会消耗内存。 curl 也无法处理并行请求。 multi 命令以块的形式发出请求,这些请求将挂起,直到全部完成。据我所知,您不能在 PHP 中发出并行请求。最好的解决方案是在命令行中使用 xargs 和 curl:
cat urls.txt | xargs -L 1 -P 10 timeout 45 curl
这将从文件中下载 url(或 curl 命令)。 -L 表示行数,-P 表示你想要的并行连接数。
在 PHP 中通过 exec 或 system 运行是最有效的。或者,您将希望使用 CURL 包装器,例如:
http://semlabs.co.uk/journal/object-oriented-curl-class-with-multi-threading
但如前所述,它不是平行的。
【讨论】: