我似乎是崩溃了,我的网站要求太多的连接一次(600~),我想把这个节流回到可能3-4个连接,睡到免费,然后添加更多的需要。
我想要用的代码是..。
// execute the handles
$running = null;
do
{
if ($running <= 4) curl_multi_exec($mh, $running); //add handle
usleep(100); //sleep
} while($running > 0);我不认为这样做是正确的/明智的方式,但谁能推荐一个更好的方法吗?
发布于 2015-07-22 04:56:31
PHP 5.5中的本机解决方案
有一个选项可以限制PHPPH5.5中使用>=的连接数和CURLMOPT_MAXCONNECTS选项。
http://php.net/manual/en/function.curl-multi-setopt.php
CURLMOPT_MAXCONNECTS
传递一个数字,该数字将用作libcurl可能缓存的同时打开的连接的最大数量。默认值为10。当缓存已满时,curl关闭缓存中最老的一个,以防止打开连接的数量增加。
例如:
curl_multi_setopt ( $mh , CURLMOPT_MAXCONNECTS, 4);注意-据报道,CentOS上存在稳定性问题,PHP5.5或更高版本是必需的。
回答你关于理智的问题
你这样做原则上是理智的..。但很容易陷入无限循环。
请注意,$running只在调用curl_multi_exec($mh, $running)时才更新,因为$running作为引用变量传递给curl_multi_exec;
解决方案
试试这些免费的库,它们可以轻松地完成你想要做的事情。
它们都经过了很好的测试,并且都具有最大的连接能力。
https://stackoverflow.com/questions/26104064
复制相似问题