Curl マルチスレッド収集は収集に失敗するか、収集が不完全ですか?
質問にもあるように、以下のようなコードなのですが、どうやって解決すればよいでしょうか?
<br> /**<br> *カールマルチスレッド<br> * * <br> * @param array $array パラレル URL <br> * @param int $timeout タイムアウト <br> * @return 配列 <br> */<br> 関数 Curl_http($array,$timeout){<br> $res = array();<br> $mh =curl_multi_init();//複数のcurlハンドルを作成します<br> $startime = getmicrotime();<br> foreach($array as $k=>$url){<br> $conn[$k]=curl_init($url);<br> curl_setopt($conn[$k], CURLOPT_TIMEOUT, $timeout);//タイムアウトを設定します <br> curl_setopt($conn[$k], CURLOPT_USERAGENT, 'Mozilla/5.0 (互換性; MSIE 5.01; Windows NT 5.0)');<br> curl_setopt($conn[$k], CURLOPT_MAXREDIRS, 7);//HTTPp ターゲティング レベル<br> curl_setopt($conn[$k], CURLOPT_HEADER, 0);//ここにヘッダーはありません、ブロック効率<br> curl_setopt($conn[$k], CURLOPT_FOLLOWLOCATION, 1) // 302 リダイレクト<br>; curl_setopt($conn[$k],CURLOPT_RETURNTRANSFER,1);<br> curl_multi_add_handle ($mh,$conn[$k]);<br> }<br> //無限ループによる CPU の消費を防ぐ この段落はインターネット上の記述方法に基づいています <br> {<br>を実行します $mrc =curl_multi_exec($mh,$active);//データがない場合はactive=true<br> } while ($mrc == CURLM_CALL_MULTI_PERFORM);//データ受信時<br> while ($active and $mrc == CURLM_OK) {//データがない場合、またはリクエストが一時停止されている場合、active=true<br> If (curl_multi_select($mh) != -1) {<br> {<br> を実行します $mrc =curl_multi_exec($mh, $active);<br> } while ($mrc == CURLM_CALL_MULTI_PERFORM);<br> }<br> }<br> foreach ($array as $k => $url) {<br> curl_error($conn[$k]);<br> $res[$k]=curl_multi_getcontent($conn[$k]);// リターン情報を取得します<br> $header[$k]=curl_getinfo($conn[$k]);//ヘッダー情報を返します<br> curl_close($conn[$k]);//ハンドルを閉じます<br> curl_multi_remove_handle($mh, $conn[$k]) // リソースを解放します <br> }<br> curl_multi_close($mh);<br> $endtime = getmicrotime();<br> $diff_time = $endtime - $startime <div class="clear">;</div>