12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
ADADADADAD
网络知识 时间:2024-11-25 14:58:33
作者:文/会员上传
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
php curl 多次是在使用curl库时,向同一个Web服务器发送多个请求(Request)的过程。使用curl的多次功能,可以增强向Web服务器请求数据的效率。假设我们现在需要使用curl来获取网页
以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。
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的功能,我们能够一次同时处理多个请求,而不是循环遍历请求,大大提高了数据请求的效率和速度。
11-20
11-19
11-20
11-20
11-20
11-19
11-20
11-20
11-19
11-20
11-19
11-19
11-19
11-19
11-19
11-19