在PHP中缓慢的HTTP POST请求

时间:2011-08-18 15:48:03

标签: php http file-get-contents

我正在尝试将一些数据(一个JSON字符串)从php脚本发布到java服务器(全部由我自己编写)并获取响应。 我尝试了以下代码:

$url="http://localhost:8000/hashmap";
$opts = array('http' => array('method' => 'POST', 'content' => $JSONDATA,'header'=>"Content-Type: application/x-www-form-urlencoded"));
$st = stream_context_create($opts);
echo file_get_contents($url, false,$st);

现在,这段代码实际上有效(我得到的结果是正确答案),但是file_get_contents在执行时每次都会挂起20秒(我打印了指令前后的时间)。服务器执行的操作在很短的时间内执行,我确信等待所有这些时间来获得响应是不正常的。 我错过了什么吗?

2 个答案:

答案 0 :(得分:1)

错误配置错误的服务器可能无法发送正确的内容大小并使用HTTP / 1.1。

修复服务器或请求数据为HTTP / 1.0

答案 1 :(得分:0)

尝试将Connection: closeContent-Length: strlen($JSONDATA)标题添加到$opts

此外,如果您想避免使用扩展,请查看我前段时间写过的this class仅使用PHP内核执行HTTP请求。它适用于PHP4(这就是我写它的原因)和PHP5,它唯一需要的扩展是OpenSSL,如果你想做一个HTTPS请求,你只需要它。在顶部的评论中记录(ish)。

支持各种内容 - GET,POST,PUT等,包括文件上传,Cookie,自动重定向处理。我在一个平台上经常使用PHP / 4.3.10并且工作得非常好的平台上使用了很多...即使我自己这么说...