繁体   English   中英

curl_multi_exec()是阻塞调用吗?

[英]Is curl_multi_exec() a blocking call?

如果PHP中的curl_multi_exec()调用是阻塞或非阻塞调用,那只是好奇。

镜头回答curl_multi_exec()非阻塞的


更长的答案curl_multi_exec()非阻塞的 ,但是可以使用curl_multi_select的组合进行curl_multi_selectcurl_multi_select会阻塞,直到任何curl_multi连接上存在活动。

编辑:目前我正在使用爬虫,这是我使用的一段代码的概述。

do {
    $mrc = curl_multi_exec($mh, $active);
    if($to_db_queue->count()>0){
       while($to_db_queue->count()>0)
          //dequeue from queue and insert into database
    }
    else  
      curl_multi_select($mh); //block till state change
} while ($active > 0);

此代码将生成curl_multi_exec ,然后将继续在$to_db_queue排队的数据库工作,否则如果队列curl_multi_select没有任何curl_multi_select将被调用以阻止循环,直到curl_multi连接中发生状态更改。

更多例子:
非阻塞
闭塞

希望这能帮助您理解这个概念。

暂无
暂无

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

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