簡體   English   中英

PHP Multicurl高CPU使用率

[英]PHP Multicurl high cpu usage

在我的1個vCPU VPS上以70 url運行此代碼並且cpu跳到100%,這是正常的嗎?

VPS - (LAMP) - PHP版本7.0.25,Intel Xeon CPU E5-2650 @ 2.00GHz

$curl_arr = array();
$master = curl_multi_init();

for($i = 0; $i < count($urls); $i++)
{
    $random = rand(1,9999);

    $link = trim($urls[$i]);

    $link = $link."?".$random;

    $url = trim($link);
    $curl_arr[$i] = curl_init($url);
    curl_setopt($curl_arr[$i], CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl_arr[$i], CURLOPT_FRESH_CONNECT, TRUE);
    curl_setopt($curl_arr[$i], CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36');
    curl_setopt($curl_arr[$i], CURLOPT_HTTPHEADER, $headers);
    curl_setopt($curl_arr[$i], CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl_arr[$i], CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($curl_arr[$i], CURLOPT_ENCODING , "gzip");
    curl_setopt($curl_arr[$i], CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );

    curl_multi_add_handle($master, $curl_arr[$i]);
}
do 
{
    curl_multi_exec($master,$running);
} 
while($running > 0);

是的,因為在您再次調用curl_multi_exec()之前沒有使用curl_multi_select()等待活動時,這正是您所要求的...

這個簡單的改變應該可以更好地工作:

do {
   curl_multi_select($master);
   curl_multi_exec($master, $running);
} while ($running);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM