curl多线程实例

来源:互联网 发布:pandakill第四季 知乎 编辑:程序博客网 时间:2024/05/17 22:52
<?php//初始化多个下载器$data=true;$page=1;function initSpider($page){$spider=array(); $baseUrl="http://dealer.auto.henan.sina.com.cn/api/auto/api2zz_carpay_today.php";$pc=100;for($i=1;$i<=50;$i++){$item=curl_init();$url=$baseUrl.'?p='.($page+$i).'&pc='.$pc;var_dump($url);curl_setopt($item, CURLOPT_URL, $url);curl_setopt($item, CURLOPT_HEADER, 0);curl_setopt($item, CURLOPT_RETURNTRANSFER, true);array_push($spider,$item);}return $spider;}while($data){$res=array();$spider=initSpider($page);$page+=50;$spiderManager = curl_multi_init();foreach($spider as $value){curl_multi_add_handle($spiderManager,$value);}$running=null;do {$status = curl_multi_exec($spiderManager,$running);} while($status===CURLM_CALL_MULTI_PERFORM||$running);foreach ($spider as $i=>$value) {$tmp=json_decode(curl_multi_getcontent($value),true);var_dump($tmp['error'];$tmp['error']==1 && $data=false;curl_multi_remove_handle($spiderManager, $value);curl_close($spider[$i]);}}curl_multi_close($spiderManager);