當我運行下面的代碼時,在我看來,curl_multi_select
和curl_multi_info_read
是相互矛盾的。據我所知curl_multi_select
應該是阻止的,直到curl_multi_exec
有迴應,但我沒有看到實際發生。爲什麼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版本是5.3.9
奇怪。我之前有一個簡單的'curl_multi_exec()',其中有一個簡短的'usleep()',並且改變這種方法使獲取所有URL所花費的總時間增加了一倍,失敗的請求數增加了三倍,並且CPU使用率基本保持不變。 – 2013-04-02 22:14:21