我遇到了一个无法在任何地方找到解决方案的问题。更糟糕的是,似乎没有其他人有这个问题,所以我可能做了一些非常愚蠢的事情。
一些背景信息:我正在尝试制作一个类似代理的页面,将 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;
我试过用它发送一个“Connection: close” header ,以及使目标代码指定它已完成运行的几种方法(设置 Content-length、flushing、die() 等)。在这一点上我真的不知道发生了什么,最让我惊讶的是我找不到有类似问题的人。
谁能帮帮我?
最佳答案
如果服务器实际上没有完成请求,这是有意义的。这在页面流式传输或服务流式传输场景中是意料之中的。您确定服务器实际上对每个请求都返回了完整且完整的 HTTP 响应吗?
关于php - cURL 根据请求挂起,等待超时继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8023513/