comcn 发表于 2022-12-4 14:31

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秒才可以加载出来,使用多线程可以快点吗?
加上多线程如何写呢
感谢大佬们 !!

atoms 发表于 2022-12-4 15:12

<?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秒左右 代码差不多 这个是不是跟网速有关呀

runfog 发表于 2022-12-4 15:56

使用多线程可以快点

dujiu3611 发表于 2022-12-4 18:53

学习一下,看到有人使用curl_multi_add_handl循环调用来实现多线程,没试过

芊雨千寻 发表于 2022-12-4 21:08

用四楼的方法curl_multi_add_handl

小弟到此一游 发表于 2022-12-4 21:16

用 curl 写爬虫 多少不理智啊 哈哈哈PHP主要服务对象就不是来写爬虫的
这个是 多线程的例子 https://blog.csdn.net/liqihang_dev/article/details/83823407
要多少线程在里面new 多少个 在线程里面for 就可以达到多线程爬虫了

小弟到此一游 发表于 2022-12-4 21:22

小弟到此一游 发表于 2022-12-4 21:16
用 curl 写爬虫 多少不理智啊 哈哈哈PHP主要服务对象就不是来写爬虫的
这个是 多线程的例子 https://bl ...

爬好了 内容发我一份哈~

comcn 发表于 2022-12-5 15:25

小弟到此一游 发表于 2022-12-4 21:16
用 curl 写爬虫 多少不理智啊 哈哈哈PHP主要服务对象就不是来写爬虫的
这个是 多线程的例子 https://bl ...

例子跟curl不大,不过我已经放弃多线程了{:301_998:}

saobee 发表于 2022-12-6 09:59

curl多线程是同时请求多个不同网址,没办法处理单一网址
页: [1]
查看完整版本: php curl多线程怎么写?