繁体   English   中英

了解php curl_multi_exec

[英]understanding php curl_multi_exec

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

我想同时下载+ = 70 urls + =。

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);
    }
}
...
?>

您可以浏览两篇描述此示例的文章。

PHP和curl_multi_exec

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

正确地做curl_multi_exec

首先是$ mrc变量,从手册中我们了解到响应是cURL预定义常量中定义的cURL代码。 在esssence中它是一个常规响应,与任何其他PHP函数一样,curl_multi_exec没有什么不同,只有在完成后才返回响应。 这意味着应该只有一个响应。 在完美世界中,该单个响应是0(零)或等于预定义的常数CURLM_OK。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM