curl_multi_exec()

1. 定义

该函数处理curl批处理中的每个句柄,无论该句柄是否需要读取或写入数据。 成功时返回一个定义于cURL预定义常量中的cURL代码。 错误时仅返回关于整个批处理栈相关的错误,即使返回CURLM_OK时单个传输也可能有问题。

2. 语法

curl_multi_exec ( resource $mh , int &$still_running ) : int

3. 参数说明

参数 可选性 数据类型 描述
$mh 必需 资源类型 通过函数curl_multi_init()打开的curl资源句柄
&$still_running 必需 整型 判断操作是否仍在执行的标识的引用

4. 示例

<?php

// curl_multi_exec()
// 处理curl批处理中的每个句柄,无论该句柄是否需要读取或写入数据

$urls = [
    'http://loripsum.net/api/5/short/headers',
    'http://loripsum.net/api/2/short/a/b/i'
];
$mh = curl_multi_init();
foreach ($urls as $key => $value) {
    $ch[$key] = curl_init();
    curl_setopt($ch[$key], CURLOPT_URL, $value);
    curl_multi_add_handle($mh, $ch[$key]);
}

// 批处理
$running = null;
do {
    curl_multi_exec($mh, $running);// 逐个处理执行句柄
    curl_multi_select($mh);
} while ($running > 0);

// 移除批处理中的所有传输会话
foreach ($ch as $key => $value) {
    curl_multi_remove_handle($mh, $value);
}

// 关闭所有句柄
curl_multi_close($mh);

5. 延展阅读