是否可以使用PHP cURL获得部分响应?

时间:2013-05-14 15:11:10

标签: php curl

这是我的代码

 $url = "partial_response.php";
 $sac_curl = curl_init();
 curl_setopt($sac_curl, CURLOPT_HTTPGET, true);
 curl_setopt($sac_curl, CURLOPT_URL, $url);
 curl_setopt($sac_curl, CURLOPT_RETURNTRANSFER, true);
 curl_setopt($sac_curl, CURLOPT_HEADER, false);
 curl_setopt($sac_curl, CURLOPT_TIMEOUT, 11);
 $resp = curl_exec($sac_curl); 
 curl_close($sac_curl);
 echo $resp;

Partial_response.php

header( 'Content-type: text/html; charset=utf-8' );
echo 'Job waiting ...<br />';
for( $i = 0 ; $i &#60; 10 ; $i++ )
{
echo $i . '<br/>';
flush();
ob_flush();
sleep(1);
}
echo 'End ...<br/>';

从about代码我试图从partial_response.php获得部分响应。我想要的是,我需要curl单独返回“Job waiting ..”而不是等待partial_response.php来完成循环并返回整个数据。因此,当我将CURLOPT_TIMEOUT降低到11以下时,我根本得不到任何响应。请澄清我的疑问。 提前谢谢。

2 个答案:

答案 0 :(得分:3)

我后来意识到cURL不能做我想做的事情,我使用了stream_context_get_options 实现我想要的。这是http://www.php.net/manual/en/function.stream-context-get-options.php

答案 1 :(得分:1)

不,我不敢。至少不是我所知道的,这只是因为PHP是一种同步语言,这意味着你不能“跳过”任务。 (即curl_exec()将始终 - 无论如何 - 在请求完成之前执行)