这听起来像是一个建筑问题.为什么你需要同时发出数千个请求?那种parellism会不会有任何好处,或者你是不是偶然会遇到DOS(拒绝服务)一些可疑的Web服务/ API?
假设您没有敲击单个远程服务器,您仍然需要担心本地盒可以处理的连接数.只有很多端口你可以使用传出,它们的测量成本低至数万.如果你疯狂地打开连接,就不难达到这个限制.任何使用apachebench过度负载测试的人都知道这一点.
PHP对于这种事情来说不是一个很好的工具 – 而且我是一个90%PHP的人.没有线程,而且内存密集.如果你想并行1000个PHP进程,那么你将需要多台机器.你的典型PHP进程将消耗大约10-20兆内存,除非你调整它的地狱(可能在编译时.
你说这发生在一年一次.这让我觉得可能没有必要那个parellel.如果您只有24或36个并行进程怎么办?
那就是说,我可能会这样做. PHP可能会正常工作,如果你遇到内存效率低下的问题,你可以换掉一个部分.您需要两个或多或少的异步队列,以及一对处理它们的进程:
>“获取队列” – 需要进行的HTTP请求的工作队列.他们执行请求并将数据粘贴到处理队列中(请参阅下一个项目符号).>“处理队列”工作队列,通过HTTP响应包含的任何方式工作.当队列被处理时,它可以将新项添加到“获取队列”>在获取队列上并行运行的某个进程(或几十个).并行性在这里很好,因为由于网络的原因,你有很多延迟.>一些咀嚼“处理队列”的过程 – 并不清楚并行性在这里会有所帮助.所有这些处理都在本地进行,并且可能是一个简单的循环.