PHP 関数の概要—curl_multi_select(): 現在アクティブな cURL 転送が完了するまで待機します
PHP では、cURL ライブラリを使用して HTTP リクエストを行うことは非常に一般的な操作です。複数の HTTP リクエストを同時に処理する必要がある場合、curl_multi ライブラリを使用してこれを実現できます。 curl_multi ライブラリを使用する場合、多くの場合、現在アクティブな cURL 転送が完了するまで待つ必要があります。このとき、curl_multi_select() 関数を使用できます。
curl_multi_select(resource $mh[, float $timeout])
curl_multi_select() 関数は、現在アクティブな cURL 転送が完了するまで待機し、読み取り可能なハンドルの数を返します。この関数を呼び出すと、待機中もスクリプトがアクティブなままになります。
$mh = curl_multi_init(); $ch1 = curl_init(); curl_setopt($ch1, CURLOPT_URL, "https://example.com/api/request1"); curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true); curl_multi_add_handle($mh, $ch1); $ch2 = curl_init(); curl_setopt($ch2, CURLOPT_URL, "https://example.com/api/request2"); curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true); curl_multi_add_handle($mh, $ch2); do { $status = curl_multi_exec($mh, $active); if ($active) { curl_multi_select($mh); // 等待当前活动的cURL传输完成 } } while ($active && $status == CURLM_OK); // 处理完所有请求后,关闭cURL句柄 foreach ([$ch1, $ch2] as $ch) { curl_multi_remove_handle($mh, $ch); curl_close($ch); } curl_multi_close($mh);
この例では、curl_multi ハンドルを作成し、2 つのカール ハンドルを追加します。次に、ループを使用して、現在アクティブな cURL 転送が完了するのを待ちます。各ループで、curl_multi_exec() 関数を呼び出して cURL 転送を処理し、アクティブな転送があるかどうかを確認します。アクティブな転送がある場合は、curl_multi_select() 関数を呼び出して待機し、待機中に他のタスクを処理します。ループは、すべての転送が完了し、アクティブな転送がなくなるまで実行されます。
最後に、すべてのリクエストを処理した後、すべての cURL ハンドルとcurl_multi ハンドルを閉じます。
curl_multi_select() 関数を使用すると、現在アクティブな cURL 転送が完了するのを待つことができます。これにより、待機中にスクリプトがアクティブな状態に保たれ、複数の HTTP リクエストの効率とパフォーマンスが向上します。
注: この関数を使用するときは、スクリプトが無限待機状態に陥らないように、エラーと例外が正しく処理されていることを確認してください。
以上がPHP 関数の紹介—curl_multi_select(): 現在アクティブな cURL 転送が完了するまで待ちますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。