2012-01-04 2 views
3

誰も私がなぜここに2つのループがあるのか​​理解できますか?CURL MULTI - なぜ2つのループですか?

<?php 
// create both cURL resources 
$ch1 = curl_init(); 
$ch2 = curl_init(); 

// set URL and other appropriate options 
curl_setopt($ch1, CURLOPT_URL, "http://lxr.php.net/"); 
curl_setopt($ch1, CURLOPT_HEADER, 0); 
curl_setopt($ch2, CURLOPT_URL, "http://www.php.net/"); 
curl_setopt($ch2, CURLOPT_HEADER, 0); 

//create the multiple cURL handle 
$mh = curl_multi_init(); 

//add the two handles 
curl_multi_add_handle($mh,$ch1); 
curl_multi_add_handle($mh,$ch2); 

$active = null; 
//execute the handles 
do { 
    $mrc = curl_multi_exec($mh, $active); 
} while ($mrc == CURLM_CALL_MULTI_PERFORM); 

while ($active && $mrc == CURLM_OK) { 
    if (curl_multi_select($mh) != -1) { 
     do { 
      $mrc = curl_multi_exec($mh, $active); 
     } while ($mrc == CURLM_CALL_MULTI_PERFORM); 
    } 
} 

//close the handles 
curl_multi_remove_handle($mh, $ch1); 
curl_multi_remove_handle($mh, $ch2); 
curl_multi_close($mh); 

?> 

コードがhttp://php.net/manual/en/function.curl-multi-exec.phpから取られる - 最初の例

別の問題のコードは妙にmulti_exec機能せずにカールを使用するときに起こったことはありません画面にすべてを出力していることです。私は前に内容をエコーする必要があったが、これについては尋ねることなしにすべてをぼかした。

+0

bcoa 2つの異なるUR'Lがあり、2つの異なる 'curl object'が存在します – diEcho

+0

いいえ、そうではありません。マルチインターフェースは、同じループ内で多くの同時のものを「駆動」する。 –

答えて

8

いい解説はありません。それは確かに単一のループに移動することができます。

このサンプルコードは、最初のコール/ループを実行するかどうかを確認するcurlプロジェクトのプレーンCで行ったデモコードに由来していると思います。

コードを簡単に書き換えて、1つのループだけで使用できます。

+0

最初のdo whileループを削除しようとしましたが動作しません。 –

+2

あなたはちょうどいくつかの線を削除するだけでなく、いくつかのインテリジェンスを使用する必要があります! 2番目のループのwhile()条件は最初に一致する必要があります。それ以外の場合は実行されません –

+0

thanx多くの男 –

関連する問題