markdown PHP:curl_multi
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了markdown PHP:curl_multi相关的知识,希望对你有一定的参考价值。
# PHP中同时发起多个http请求
```php
function multiCurl($urlArr)
{
static $mh = null;
if (empty($mh)) {
$mh = curl_multi_init();
}
$conn = [];
foreach ($urlArr as $i => $url) {
$conn[$i] = curl_init($url);
curl_setopt($conn[$i], CURLOPT_HTTPHEADER, []); // set header
curl_setopt($conn[$i], CURLOPT_HEADER, 0); // no need header in output
curl_setopt($conn[$i], CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($conn[$i], CURLOPT_TIMEOUT, 15);//
curl_setopt($conn[$i], CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($mh, $conn[$i]);
}
do {
curl_multi_exec($mh, $active);
if (-1 == curl_multi_select($mh)) {
usleep(1);
}
} while ($active);
$result = [];
$fails = [];
foreach ($urlArr as $i => $url) {
$ch = $conn[$i];
$rawData = curl_multi_getcontent($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ( false===$rawData || 200 != $httpCode ) {
$fails[] = $url;
} else {
$result[$url] = $rawData;
}
curl_multi_remove_handle($mh, $ch);
curl_close($ch);
}
if ( !empty($fails) ) {
$result += multiCurl($fails);
}
if ( !empty($mh) ) {
curl_multi_close($mh);
}
return $result;
}
```
![Analytics](https://ga-beacon.appspot.com/UA-40468327-2/php-curl_multi)
以上是关于markdown PHP:curl_multi的主要内容,如果未能解决你的问题,请参考以下文章
浅析php curl_multi_*系列函数进行批量http请求
PHP 使用 curl_* 系列函数和 curl_multi_* 系列函数进行多接口调用时的性能对比
cURL 版本 7.64 上的 curl_multi 出现“无法解析主机”错误
我可以将 curl_multi/multi_socket 与 libevent 一起使用吗
如何在 PHP 中发出异步 HTTP 请求
解析php中curl