2010-09-11 44 views
1

如果$ ch在PHP中沒有準備好,curl_multi_getcontent($ ch)會返回什麼結果?

回答

5

答案你問的問題是

  • 如果響應尚未尚未收到,curl_multi_getcontent回報NULL
  • 如果正在進行轉移,curl_multi_getcontent返回到目前爲止檢索到的數據。


你的意思是問這樣的問題,顯然是這樣的:我怎麼知道什麼時候curl_multi...操作完成?

答案是你不用curl_multi_getcontent這個。取而代之的是,反覆呼叫curl_multi_exec,直到第二個參數(也就是在其傳輸中仍在使用的子句柄的數量)變爲0. This blog post從手冊中的註釋中顯示一些工作代碼。你可能也想看看curl_multi_select,它會阻塞,直到連接上有一些活動。這可能會導致更少的週期浪費,導致curl_multi_exec調用:請參閱manual page上的示例#1,以獲取curl_multi_exec

如果您使用的是5.2.0或更高版本,則可以使用curl_multi_info_read來獲取單個連接的狀態,而不是等待所有連接的狀態。 (manual)

+0

嗯......我可能很快就打了'接受'。看起來,當我使用curl_multi_getcontent($ ch)!== NULL的條件時,我只獲得了頁面的前幾行,然後中斷了。我認爲它仍在下載,我得到的信息有點過早。 – KeatsKelleher 2010-09-11 01:15:41

+1

正如前面提到的(現在進一步解釋),在調用'curl_multi_getcontent'之前,您應該測試'curl_multi_exec'的結果以查看它是否等於'CURLM_CALL_MULTI_PERFORM'。 – grossvogel 2010-09-11 03:09:30

+0

什麼時候我想知道多個句柄中的單個句柄是否完成? – KeatsKelleher 2010-09-16 15:50:46

相關問題