curl_exec($ch)
是使用cURL库执行HTTP请求并获取响应的函数。它接受一个cURL句柄作为参数,并返回执行后的结果。
为了提高效率,可以将cURL请求转为异步操作,使用非阻塞的方式发送请求并处理响应。以下是使用curl_multi
扩展实现的异步执行示例代码:
$urls = [
"https://suo.run/voc/ins.php",
// 其他URL...
];
$mh = curl_multi_init();
$handles = [];
foreach ($urls as $url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([
'key' => '123',
'title' => $title,
'content' => $content
]));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 设置为不输出到屏幕而是返回结果
curl_setopt($ch, CURLOPT_HEADER, false); // 不包含头部信息
curl_multi_add_handle($mh, $ch);
$handles[] = $ch;
}
// 执行请求
$running = null;
do {
curl_multi_exec($mh, $running);
} while ($running > 0);
// 获取响应
$responses = [];
foreach ($handles as $ch) {
$response = curl_multi_getcontent($ch);
$responses[] = $response;
curl_multi_remove_handle($mh, $ch);
curl_close($ch);
}
curl_multi_close($mh);
// 处理响应数据
foreach ($responses as $response) {
// 处理响应数据...
}
以上代码将cURL句柄添加到curl_multi
的处理器中,并通过循环异步执行所有请求。然后,通过curl_multi_getcontent()
函数获取每个请求的响应数据,并在处理完毕后关闭句柄。
使用curl_multi
可以同时处理多个HTTP请求,而不需要等待每个请求的结果。这样可以提高请求效率和响应速度。
请注意,在使用curl_multi
时要确保服务器允许并发请求,并在合适的地方进行错误处理和异常情况处理。另外,请根据自己的实际需求结合文档进行相应的调整和优化。