php curl 多次
php curl 多次是在使用curl库时,向同一个Web服务器发送多个请求(Request)的过程。使用curl的多次功能,可以增强向Web服务器请求数据的效率。
假设我们现在需要使用curl来获取网页上的一堆图片文件,通常的做法是通过循环方式,循环遍历每一个图片的URL,一次下载一个图片。这种做法在处理少量图片时可以接受,但是当图片数量很大时,循环遍历下载会花费较长时间。使用php curl多次请求数据,则可以一次同时发送多个请求,大大加速获取数据的速度。
$url_array = array('http://www.example.com/image1.jpg','http://www.example.com/image2.jpg','http://www.example.com/image3.jpg','http://www.example.com/image4.jpg','http://www.example.com/image5.jpg','http://www.example.com/image6.jpg',);$curl_handles = array();foreach ($url_array as $url) {$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_HEADER, 0);curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);$curl_handles[] = $ch;}$multi_handle = curl_multi_init();foreach ($curl_handles as $ch) {curl_multi_add_handle($multi_handle,$ch);}$active = null;do {$status = curl_multi_exec($multi_handle, $active);if ($status != CURLM_OK) {break;}if ($active) {curl_multi_select($multi_handle);}} while ($active >= 1);foreach ($curl_handles as $ch) {$content = curl_multi_getcontent($ch);echo 'Size of ' . $url_array[$i] . ' : ' . strlen($content) . ' bytes';curl_multi_remove_handle($multi_handle, $ch);}curl_multi_close($multi_handle);
上述代码中,我们通过使用curl_multi_init()函数创建了一个新的curl_multi handle,并将每一个获取图片的curl easy handle 添加到了这个新的curl_multi handle中$multi_handle。
通过循环遍历$curl_handles,我们将所有的curl easy handle添加到了$multi_handle中。准备工作完成后,在主循环中,我们使用curl_multi_exec()函数来执行所有的easy handle,直到所有的请求都已经完成。在每次调用curl_multi_exec()函数时,我们同样需要检查返回值,以确定是否出错。
循环结束后,我们通过使用curl_multi_getcontent()函数,获取每个curl easy handle的内容即可。在这个例子当中,我们展示了每个图片的大小。
这样,使用php curl多次请求数据的代码就完成了。通过使用curl_multi_handle的功能,我们能够一次同时处理多个请求,而不是循环遍历请求,大大提高了数据请求的效率和速度。
上一篇:php curl 压缩
下一篇:php curl 命令
php curl 多次
声卡驱动正常但是没有声音如何办?声卡驱动正常没声音的解决方法
英伟达显卡驱动如何退回到原来版本?英伟达显卡驱动退回到原来版
重装系统,电脑只有一个C盘如何创建分区
Defender提示错误应用程序MsMpEng.exe无法启动
电脑无法启动或仍在加载如何办?电脑无法启动或仍在加载的解决方
打印机驱动如何卸载删除?卸载打印机驱动干净的教程
电脑没网如何安装网卡驱动?教你没网如何安装网卡驱动的方法
系统32位和62位如何选择:详解它们之间的差异
电脑文件删不掉如何办?四种方法解决
任务管理器快捷键有哪些?任务管理器快捷键大全