【发布时间】:2016-03-20 06:15:18
【问题描述】:
所以,我有一个发送大型 JSON 对象的 php 脚本,这是我用来执行此操作的代码。
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-type: application/json"));
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($curl, CURLOPT_VERBOSE, true);
$json_response = curl_exec($curl);
现在数据少的时候,请求顺利通过。但是,当 json 对象变大时,它突然无法发送数据,而是在请求标头中显示“Content-Length:0”,就好像它不包含该对象一样。
我假设数据的大小是有限制的。有没有办法绕过它?
我搜索了类似的问题,并找到了发送文件的解决方案。但是我这里的对象是来自数据库的结果集,因此我宁愿保留文件方法作为最后的手段。
谢谢。
【问题讨论】:
-
服务器可能有限制,您可以发送多少大数据。也许你正在跨越这个限制。
-
我增加了 php.ini 中的所有限制,包括“memory_limit”、“post_max_size”、“max_input_time”和“max_execution_time”。有什么我想念的吗?
-
我说的不是你方的限制,而是你要发送到的服务器端。
-
我也可以完全控制另一端,我也增加了这些数字。让我相信这是请求中的问题的原因是“内容长度”突然变为 0。
-
尝试在您的 HTTP 标头中显式发送“Content-Lengh”标头,在您的情况下等于
strlen(json_encode($data))