php curl会开新进程吗,打开数以千计的cURL句柄而不会遇到问题? (PHP)

这篇博客探讨了在一年一次的特定场景下,如何有效地处理并发发送数千个HTTP请求的问题。作者建议使用异步队列和多个进程来分担负载,避免对单一服务器造成拒绝服务,并指出PHP在处理这种高并发任务时可能存在内存和线程限制。建议采用获取队列和处理队列的双工模型,以网络延迟为并行性的优势。
摘要由CSDN通过智能技术生成

这听起来像是一个建筑问题.为什么你需要同时发出数千个请求?那种parellism会不会有任何好处,或者你是不是偶然会遇到DOS(拒绝服务)一些可疑的Web服务/ API?

假设您没有敲击单个远程服务器,您仍然需要担心本地盒可以处理的连接数.只有很多端口你可以使用传出,它们的测量成本低至数万.如果你疯狂地打开连接,就不难达到这个限制.任何使用apachebench过度负载测试的人都知道这一点.

PHP对于这种事情来说不是一个很好的工具 – 而且我是一个90%PHP的人.没有线程,而且内存密集.如果你想并行1000个PHP进程,那么你将需要多台机器.你的典型PHP进程将消耗大约10-20兆内存,除非你调整它的地狱(可能在编译时.

你说这发生在一年一次.这让我觉得可能没有必要那个parellel.如果您只有24或36个并行进程怎么办?

那就是说,我可能会这样做. PHP可能会正常工作,如果你遇到内存效率低下的问题,你可以换掉一个部分.您需要两个或多或少的异步队列,以及一对处理它们的进程:

>“获取队列” – 需要进行的HTTP请求的工作队列.他们执行请求并将数据粘贴到处理队列中(请参阅下一个项目符号).>“处理队列”工作队列,通过HTTP响应包含的任何方式工作.当队列被处理时,它可以将新项添加到“获取队列”>在获取队列上并行运行的某个进程(或几十个).并行性在这里很好,因为由于网络的原因,你有很多延迟.>一些咀嚼“处理队列”的过程 – 并不清楚并行性在这里会有所帮助.所有这些处理都在本地进行,并且可能是一个简单的循环.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值