多cURL(curl_multi_select)的最新用法?

问题描述 投票:0回答:1

[查看php.net示例和贡献者代码后,我发现有不同的方法,但是其中一些方法或者经过测试还是无法工作,或者are deprecated。通过互联网different articles建议使用不同的方法:

do {
    curl_multi_exec($mh,$active); 
}  
while ($active > 0);

其他示例/程序员以“高级”方式使用:

do {
    $mrc = curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
while ($active && $mrc == CURLM_OK) {
    if (curl_multi_select($mh) == -1) {
        usleep(1000);
    }
    else {
        do {
            $mrc = curl_multi_exec($mh, $active);
        } while ($mrc == CURLM_CALL_MULTI_PERFORM);
    }
}

[谁能说出curl_multi_exec的最新和最佳用法?(顺便说一句,就我个人而言,i've found确实表现出色usleep

php curl libcurl php-curl
1个回答
0
投票

usleep()调用不会“提高性能”。如果函数不等待任何内容而是立即返回,则可以避免出现繁忙循环。对于传输开始时的名称解析器阶段,尤其是(某些较旧的)libcurl版本可能会发生这种情况。 (将来,当CURL / PHP不再具有这种行为时,可以取消这种预防措施。)

但是您可以肯定跳过对CURLM_CALL_MULTI_PERFORM的检查,因为libcurl自从很多年以来都没有返回过。因此,这将使它变得>>

$active = 1;
$mrc = CURLM_OK;
while ($active && $mrc == CURLM_OK) {
    if (curl_multi_select($mh) == -1) {
        usleep(1000);
    }
    else {
       $mrc = curl_multi_exec($mh, $active);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.