5

只是好奇curl_multi_exec()PHP中的调用是阻塞调用还是非阻塞调用。

4

1 回答 1

6

射击答案curl_multi_exec()非阻塞


更长的答案:curl_multi_exec()non-blocking,但是可以使用 的组合进行阻塞curl_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 连接中发生状态更改。

更多示例:
非阻塞
阻塞

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

于 2013-01-21T07:06:00.340 回答