我使用php函數返回超過1000個網站的狀態(即網站是上或下)。爲什麼curl_multi在我的本地主機上無法正常工作?
public function curlCheck($nodes) {
$results = array();
$node_count = count($nodes);
$curl_arr = array();
$master = curl_multi_init();
for ($i = 0; $i < $node_count; $i++) {
$url = $nodes[$i];
$curl_arr[$i] = curl_init($url);
curl_setopt($curl_arr[$i], CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_arr[$i], CURLOPT_NOBODY, true);
curl_setopt($curl_arr[$i], CURLOPT_TIMEOUT, 5);
curl_multi_add_handle($master, $curl_arr[$i]);
}
$running = null;
do {
curl_multi_exec($master, $running);
} while ($running > 0);
for ($i = 0; $i < $node_count; $i++) {
$results[$i]['url'] = curl_getinfo($curl_arr[$i], CURLINFO_EFFECTIVE_URL);
$results[$i]['code'] = curl_getinfo($curl_arr[$i], CURLINFO_HTTP_CODE);
$results[$i]['time'] = curl_getinfo($curl_arr[$i], CURLINFO_PRETRANSFER_TIME);
}
echo 'done';
return $results;
}
$nodes = array('http://google.com','http://yahoo.com','http://msn.com');
$result= curlCheck($nodes);
print_r($result);
雖然我用curl_multi
,但這個過程的時間很長;我如何爲此執行並行處理。如果使用XAMPP或wampp
使用set_time_limit(0);
;:
謝謝你的回覆, 你能寫一個關於如何使用這個類的例子嗎? – 2013-02-13 10:03:27
沒問題;我在這裏如果你遇到麻煩 – 2013-02-13 10:03:58
你能寫一個關於如何使用這個類的例子嗎? – 2013-02-13 10:09:52