簡體   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