php curl多线程怎么写?
本帖最后由 comcn 于 2022-12-4 14:45 编辑目标网址:aHR0cHM6Ly9jai5semlhcGkuY29tL2FwaS5waHAvcHJvdmlkZS92b2QvP2FjPXZpZGVvbGlzdCZ3ZD0lRTUlQTQlQTclRTUlODYlQjMlRTYlODglOTg=
我的代码:
$ch = curl_init();
$url='目标网址';
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, array('Content-type: application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
// curl_setopt($ch, CURLOPT_HEADER, false)
$output = curl_exec($ch);
return json($output);
curl需要1.3秒才可以加载出来,使用多线程可以快点吗?
加上多线程如何写呢
感谢大佬们 !! <?php
function https($url,$referer="",$post=array()){
$c=curl_init();
curl_setopt($c,CURLOPT_URL,$url);
if($post)curl_setopt($c,CURLOPT_POSTFIELDS,http_build_query($post));
if($referer)curl_setopt($c,CURLOPT_REFERER,$referer);
curl_setopt($c,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36');
curl_setopt($c,CURLOPT_HEADER,0);
curl_setopt($c,CURLOPT_RETURNTRANSFER,1);
curl_setopt($c,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($c,CURLOPT_SSL_VERIFYHOST,false);
$html=curl_exec($c);
curl_close($c);
return $html;
}
$start=microtime(true);
$html=https(base64_decode("aHR0cHM6Ly9jai5semlhcGkuY29tL2FwaS5waHAvcHJvdmlkZS92b2QvP2FjPXZpZGVvbGlzdCZ3ZD0lRTUlQTQlQTclRTUlODYlQjMlRTYlODglOTg="));
$end=microtime(false);
echo "length:".strlen($html)."<br>";
echo "time:".(microtime(true)-$start)."s";
length:34078
time:0.62203598022461s
我试了试我的 用时0.62秒左右 代码差不多 这个是不是跟网速有关呀 使用多线程可以快点 学习一下,看到有人使用curl_multi_add_handl循环调用来实现多线程,没试过 用四楼的方法curl_multi_add_handl 用 curl 写爬虫 多少不理智啊 哈哈哈PHP主要服务对象就不是来写爬虫的
这个是 多线程的例子 https://blog.csdn.net/liqihang_dev/article/details/83823407
要多少线程在里面new 多少个 在线程里面for 就可以达到多线程爬虫了 小弟到此一游 发表于 2022-12-4 21:16
用 curl 写爬虫 多少不理智啊 哈哈哈PHP主要服务对象就不是来写爬虫的
这个是 多线程的例子 https://bl ...
爬好了 内容发我一份哈~ 小弟到此一游 发表于 2022-12-4 21:16
用 curl 写爬虫 多少不理智啊 哈哈哈PHP主要服务对象就不是来写爬虫的
这个是 多线程的例子 https://bl ...
例子跟curl不大,不过我已经放弃多线程了{:301_998:} curl多线程是同时请求多个不同网址,没办法处理单一网址
页:
[1]