php多线程抓取网页(PHP利用CurlFunctionsFunctions并发多线程地址)
优采云 发布时间: 2021-12-18 19:16php多线程抓取网页(PHP利用CurlFunctionsFunctions并发多线程地址)
PHP 可以使用 Curl Functions 完成各种文件传输操作,比如模拟浏览器发送 GET、POST 请求等,但是 PHP 语言本身不支持多线程,所以开发爬虫程序的效率是不高。这时候往往需要Curl Multi Functions来实现对多个URL地址的并发多线程访问。既然Curl Multi Function这么强大,那我可以用Curl Multi Functions来写并发多线程下载文件吗?当然,我的代码如下:
代码2:将得到的代码先放入变量中,再写入文件
//上面的do有问题,这样写会报错
//改变do循环开始
做{
$mrc = curl_multi_exec($mh,$active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
while ($active and $mrc == CURLM_OK) {
if (curl_multi_select($mh) != -1) {
做{
$mrc = curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
}
}
//改变do循环结束
因为$active要等到所有url数据被接受后才变为false,这里用curl_multi_exec的返回值来判断是否有数据。有数据时,会不断调用curl_multi_exec,如果没有数据,则进入select阶段。 , 新数据可以被唤醒继续执行。这里的好处是没有了不必要的 CPU 消耗。