PHP マニュアル では不明瞭な、curl_multi ファミリーの関数について頭を悩ませている人は多いと思います。また、記載されている例は非常に単純なので、そこから学ぶことはできません。 Web ページはありますが、完全なアプリケーション例は見つかりませんでした。
ステップは次のように要約されます: ステップ 1:curl_multi_init を呼び出す
ステップ 2:ループ内でcurl_multi_add_handleを呼び出すこのステップでは、curl_multi_add_handle の 2 番目のパラメーターがcurl_init のサブハンドルであることに注意してください。
ステップ 3: 引き続きcurl_multi_execを呼び出しますステップ 4: 必要に応じてループ内でcurl_multi_getcontentを呼び出し、結果を取得します
ステップ 5:curl_multi_remove_handleを呼び出し、単語ハンドルごとにcurl_closeを呼び出します
ステップ6:curl_multi_closeを呼び出します
オンライン検索はこちらですその作成者が
dir
ty サンプルと呼ぶものの簡単な例 (なぜダーティなのかは後で説明します):
/*
これは、PHP のcurl-multi の簡単で汚い例です。PHP 5.0.0RC1 CLI / FreeBSD 5.2.1 でテストされています
*/mains = array (
"http://www.cnn.com/"、foreach ($connomains as $i => $url) {
$conn[$i]=curl_init($url); topt ($conn[$i],CURLOPT_RETURNTRANSFER,1); mh,$active); } while
($active); curl_close($conn[$i]);
}print
_r($res); インターフェースはCのものとは実際に異なります。
all
_multi_perform); $active は false になる前にすべての URL データを受信するまで待つ必要があるため、ここでデータが存在するかどうかを判断するためにcurl_multi_exec の戻り値が使用されます。データが存在する場合は、一時的にデータが存在しない場合は、curl_multi_exec が継続的に呼び出されます。 、選択ステージに入ります。 New データが到着するとすぐに実行を継続するために起動できます。この場合の利点は、CPU を不必要に消費しないことです。 各リクエストのタイムアウトを制御します。curl_multi_add_handle の前に、curl_set
opt を通して実行します: curl_setopt($ch, CURLOPT_
TIMEOUT , $timeout) ;
タイムアウトまたはその他のエラーがあるかどうかを判断するには、curl_multi_getcontent の前に、curl_error($conn[$i]);
を使用します。
以上がPHPマルチプロセスでのcurl_multiの適用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。