2011-11-05 103 views
2

我遇到了一个问题,我无法在任何地方找到解决方案。更糟的是,没有其他人似乎有这个问题,所以我可能做一些非常愚蠢的事情。cURL挂起请求,等待超时继续

一些背景信息:我试图做一个类似代理的页面,将AJAX请求转发到不同的服务器。这是为了规避相同的域名政策。我希望这段代码做的就是获取POST变量,将它们转发到不同的页面,然后返回结果。它一直在工作,但有一件事:每次它等待超时继续。我已经把它放到了1秒钟,所以现在情况确实很好,但我宁愿有一个快速的响应和适当的超时时间。

这里是我的代码:

// create a new cURL resource 
$call = curl_init(); 

// set URL and other appropriate options 
curl_setopt($call, CURLOPT_URL, $url); 
curl_setopt($call, CURLOPT_POST, true); 
curl_setopt($call, CURLOPT_POSTFIELDS, $params); 
curl_setopt($call, CURLOPT_HEADER, false); 
curl_setopt($call, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($call, CURLOPT_CONNECTTIMEOUT, 1); 

// grab URL and pass it to the browser 
$response = curl_exec($call); 

// close cURL resource, and free up system resources 
curl_close($call); 

echo $response; 

我试图发送一个“连接:关闭”头吧,和几个办法,使目标代码指定,它的工作运行(设置内容长度,冲洗,die()等)。在这一点上我真的不知道发生了什么,最令我惊讶的是我找不到有类似问题的人。

谁能帮帮我?

+0

嗯,奇怪,你描述为等待超时,超时意味着一个最大值。如果没有指定超时值(或者如果指定0作为值),那么应用程序的行为是什么? –

+0

我还没有用0作为超时值来尝试它,但没有指定的超时大约需要15秒,我猜测这是一种默认值。 –

回答

0

如果服务器没有真正完成请求,这是有意义的。这将在页面流或服务流场景中预期。你确定服务器实际上是为每个请求返回完整的完整HTTP响应吗?

+0

我这么认为,直接从浏览器调用页面不会产生任何问题。我会仔细研究一下,可能有问题。 –