5

curl_multi_exec()PHP での呼び出しがブロック呼び出しか非ブロック呼び出しかが気になりました。

4

1 に答える 1

6

ショットの答えノンブロッキングcurl_multi_exec()です


長い答え非ブロッキングcurl_multi_exec()ですが、curl_multi接続のいずれかでアクティビティが発生するまでブロックするの組み合わせでブロッキングを行うことができます。curl_multi_select

編集: 現在私はクローラーに取り組んでいます、これは私が使用したコードの一部の概要です。

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キューに入れられたデータベースの作業を続行します。そうでない場合、curl_multi接続で状態が変化するまで、ループをブロックするため$to_db_queueにキューに何も呼び出されません。curl_multi_select

その他の例:
ノンブロッキング
ブロッキング

これが概念の理解に役立つことを願っています。

于 2013-01-21T07:06:00.340 に答える