2010-09-11 61 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

相关问题