只是为了让可能难以让它工作的其他人知道,curl_multi_info_read() 在 5.2.0 之前的 PHP 版本中不起作用,而是立即返回 NULL。
(PHP 5, PHP 7, PHP 8)
curl_multi_info_read — 获取有关当前传输的信息
询问多句柄是否有来自各个传输的消息或信息。消息可能包括来自传输的错误代码,或者只是传输已完成的事实。
重复调用此函数将在每次调用时返回一个新的结果,直到返回一个 false
作为信号表明此时没有更多要获取的信息。使用 queued_messages
指向的整数将包含在调用此函数后剩余的消息数。
返回的资源指向的数据在调用 curl_multi_remove_handle() 后将不再存在。
成功时,返回消息的关联数组,失败时返回 false
。
键 | 值 |
---|---|
msg |
CURLMSG_DONE 常量。其他返回值目前不可用。 |
result |
其中一个 CURLE_* 常量。如果一切正常,CURLE_OK 将是结果。 |
handle |
类型为 curl 的资源指示它所关心的句柄。 |
版本 | 描述 |
---|---|
8.0.0 |
multi_handle 现在期望一个 CurlMultiHandle 实例;以前,它期望一个 resource。 |
示例 #1 一个 curl_multi_info_read() 示例
<?php
$urls = array(
"http://www.cnn.com/",
"http://www.bbc.co.uk/",
"http://www.yahoo.com/"
);
$mh = curl_multi_init();
foreach ($urls as $i => $url) {
$conn[$i] = curl_init($url);
curl_setopt($conn[$i], CURLOPT_RETURNTRANSFER, 1);
curl_multi_add_handle($mh, $conn[$i]);
}
do {
$status = curl_multi_exec($mh, $active);
if ($active) {
curl_multi_select($mh);
}
while (false !== ($info = curl_multi_info_read($mh))) {
var_dump($info);
}
} while ($active && $status == CURLM_OK);
foreach ($urls as $i => $url) {
$res[$i] = curl_multi_getcontent($conn[$i]);
curl_close($conn[$i]);
}
var_dump(curl_multi_info_read($mh));
?>
上面的示例将输出类似以下内容
array(3) { ["msg"]=> int(1) ["result"]=> int(0) ["handle"]=> resource(5) of type (curl) } array(3) { ["msg"]=> int(1) ["result"]=> int(0) ["handle"]=> resource(7) of type (curl) } array(3) { ["msg"]=> int(1) ["result"]=> int(0) ["handle"]=> resource(6) of type (curl) } bool(false)