curl_multi_exec
(PHP 5, PHP 7)
curl_multi_exec — 現在の cURL ハンドルから、サブ接続を実行する
説明
curl_multi_exec
( CurlMultiHandle $multi_handle
, int &$still_running
) : int
スタック内の各ハンドルを処理します。 このメソッドは、ハンドルがデータの読み書きを要するかどうかにかかわらずコール可能です。
返り値
cURL 定義済み定数 で定義された cURL コードを返します。
注意:
これは、マルチスタック全体に関するエラーのみを返します。この関数が
CURLM_OK
を返したとしても、各転送で個別にエラーが発生している可能性があります。
変更履歴
バージョン | 説明 |
---|---|
8.0.0 | multi_handle は CurlMultiHandle クラスのインスタンスを期待するようになりました。
これより前のバージョンでは、resource を期待していました。 |
例
例1 curl_multi_exec() の例
この例は、ふたつの cURL ハンドルを作成し、それをマルチハンドルに追加して非同期で実行します。
<?php// cURL リソースを作成します$ch1 = curl_init();$ch2 = curl_init();// URL およびその他適切なオプションを設定します。curl_setopt($ch1, CURLOPT_URL, "http://example.com/%22);curl_setopt($ch1, CURLOPT_HEADER, 0);curl_setopt($ch2, CURLOPT_URL, "http://www.php.net/%22);curl_setopt($ch2, CURLOPT_HEADER, 0);// マルチ cURL ハンドルを作成します$mh = curl_multi_init();// ふたつのハンドルを追加しますcurl_multi_add_handle($mh,$ch1);curl_multi_add_handle($mh,$ch2);// ハンドルを実行しますdo { $status = curl_multi_exec($mh, $active); if ($active) { // Wait a short time for more activity curl_multi_select($mh); }} while ($active && $status == CURLM_OK);// ハンドルを閉じますcurl_multi_remove_handle($mh, $ch1);curl_multi_remove_handle($mh, $ch2);curl_multi_close($mh);?>
参考
- curl_multi_init() - 新規 cURL マルチハンドルを返す
- curl_multi_select() - curl_multi 接続のアクティビティを待つ
- curl_exec() - cURL セッションを実行する