以下のコードを実行すると、curl_multi_select
とcurl_multi_info_read
が矛盾しているようです。私が理解しているように、curl_multi_exec
に応答がありますが、実際には起こっていないことがわかるまで、curl_multi_select
はブロックされています。なぜcurl_multi_selectとcurl_multi_info_readが矛盾していますか?
$url = "http://google.com";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_VERBOSE, TRUE);
$mc = curl_multi_init();
curl_multi_add_handle($mc, $ch);
do {
$exec = curl_multi_exec($mc, $running);
} while ($exec == CURLM_CALL_MULTI_PERFORM);
$ready=curl_multi_select($mc, 100);
var_dump($ready);
$info = curl_multi_info_read($mc,$msgs);
var_dump($info);
これは自分自身と矛盾するようだ
int 1
boolean false
を返します。どのように準備ができて、何のメッセージも持てませんか?
私が使用しているPHPのバージョンがspecから5.3.9
奇妙な。私は単純に 'curl_multi_exec()'を短く 'usleep() 'していました。このアプローチに変更すると、すべてのURLを取得するのにかかる時間の合計が2倍になり、失敗したリクエストの数は3倍になり、CPU使用率は基本的に同じままでした。 –