curl_multi_close() 函数用于关闭一组cURL句柄。
curl_multi_close ( CurlMultiHandle $multi_handle ) : void
| 参数 | 描述 |
|---|---|
| multi_handle | 由 curl_multi_init() 返回的 cURL 多个句柄。 |
该函数没有返回值。
以下示例演示了如何使用 curl_multi_close() 函数:
// 初始化多个cURL句柄
$mh = curl_multi_init();
// 创建两个cURL资源
$ch1 = curl_init();
$ch2 = curl_init();
// 设置URL和相应的选项
curl_setopt($ch1, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch1, CURLOPT_HEADER, 0);
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch2, CURLOPT_URL, "http://www.php.net/");
curl_setopt($ch2, CURLOPT_HEADER, 0);
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1);
// 增加两个句柄
curl_multi_add_handle($mh, $ch1);
curl_multi_add_handle($mh, $ch2);
// 执行批处理句柄
$running = null;
do {
curl_multi_exec($mh, $running);
} while ($running > 0);
// 关闭所有句柄
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);
curl_multi_close($mh);
// 创建多个cURL句柄
$urls = [
'http://api.example.com/users',
'http://api.example.com/products',
'http://api.example.com/orders'
];
$mh = curl_multi_init();
$handles = [];
foreach ($urls as $url) {
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
curl_multi_add_handle($mh, $ch);
$handles[] = $ch;
}
// 执行并发请求
$running = null;
do {
curl_multi_exec($mh, $running);
curl_multi_select($mh);
} while ($running > 0);
// 获取所有响应
$responses = [];
foreach ($handles as $ch) {
$responses[] = curl_multi_getcontent($ch);
curl_multi_remove_handle($mh, $ch);
curl_close($ch);
}
// 关闭多句柄
curl_multi_close($mh);
// 处理响应数据
foreach ($responses as $response) {
echo $response . "\n";
}
curl_multi_close() 之前,应该先使用 curl_multi_remove_handle() 移除所有单独的cURL句柄,然后使用 curl_close() 关闭它们。