了解 php curl_multi_exec

2022-08-30 13:43:19

我试图理解curl_multi_exec。我在这里复制了一个手动示例。所以我想知道,它是如何工作的?第一个循环发送http请求我猜?但是它之后是一个循环内的循环,使用具有看似未记录的标志的函数。

我想并行下载+=70个网址+=。

http://www.php.net/manual/en/function.curl-multi-exec.php

<?php
...
$active = null;
//execute the handles
do {
    $mrc = curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);

while ($active && $mrc == CURLM_OK) {
    if (curl_multi_select($mh) != -1) {
        do {
            $mrc = curl_multi_exec($mh, $active);
        } while ($mrc == CURLM_CALL_MULTI_PERFORM);
    }
}
...
?>

答案 1

您可以浏览介绍此示例的两篇文章。

菲律宾比索和curl_multi_exec

首先,这是高级别。有两个外部循环。第一个负责立即清除卷曲缓冲区。第二个负责等待更多信息,然后获取该信息。这是所谓的阻塞 I/O 的一个示例。我们阻止程序其余部分的执行,直到网络 I/O 完成。虽然这不是处理网络 I/O 的最可取方式,但它确实是我们在单线程同步 PHP 中的唯一选择。

以正确的方式curl_multi_exec做事

首先是变量,从手册中我们了解到响应是在cURL预定义常量中定义的cURL代码。从本质上讲,它是一个常规响应,与任何其他PHP函数一样,没有什么不同,只有在完成后才会返回响应。这意味着应该只有一个响应。在理想情况下,此单个响应为 0(零)或等于预定义的常量 。$mrccurl_multi_execCURLM_OK


答案 2

推荐