我听说你可能会遇到内存问题,打开太多句柄,这可能会导致致命的错误.如何避免这种情况并仍然尽可能快地提出我的URL请求?
如果我需要一次限制cURL请求的数量,那么将限制设置为什么是好的?
背景:我正在与Godaddy共享托管,这对cURL请求很好,尽管我没有用数千个并行请求测试它.在未来,我将处于Rackspace Cloud Site,它可以处理适度的负载.
这个巨大的cURL请求是每年一次的事情,而不是每日网站 *** 作的一部分.
解决方法 这听起来像是一个建筑问题.为什么你需要同时发出数千个请求?那种parellism会不会有任何好处,或者你是不是偶然会遇到DOS(拒绝服务)一些可疑的Web服务/ API?假设您没有敲击单个远程服务器,您仍然需要担心本地盒可以处理的连接数.只有很多端口你可以使用传出,它们的测量成本低至数万.如果你疯狂地打开连接,就不难达到这个限制.任何使用apachebench过度负载测试的人都知道这一点.
PHP对于这种事情来说不是一个很好的工具 – 而且我是一个90%PHP的人.没有线程,而且内存密集.如果你想并行1000个PHP进程,那么你将需要多台机器.你的典型PHP进程将消耗大约10-20兆内存,除非你调整它的地狱(可能在编译时.
你说这发生在一年一次.这让我觉得可能没有必要那个parellel.如果您只有24或36个并行进程怎么办?
那就是说,我可能会这样做. PHP可能会正常工作,如果你遇到内存效率低下的问题,你可以换掉一个部分.您需要两个或多或少的异步队列,以及一对处理它们的进程:
>“获取队列” – 需要进行的http请求的工作队列.他们执行请求并将数据粘贴到处理队列中(请参阅下一个项目符号).>“处理队列”工作队列,通过http响应包含的任何方式工作.当队列被处理时,它可以将新项添加到“获取队列”>在获取队列上并行运行的某个进程(或几十个).并行性在这里很好,因为由于网络的原因,你有很多延迟.>一些咀嚼“处理队列”的过程 – 并不清楚并行性在这里会有所帮助.所有这些处理都在本地进行,并且可能是一个简单的循环.
总结以上是内存溢出为你收集整理的打开数以千计的cURL句柄而不会遇到问题? (PHP)全部内容,希望文章能够帮你解决打开数以千计的cURL句柄而不会遇到问题? (PHP)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)