我正在使用PHP代理来获取文件的内容。我想使用功能强大的jQuery选项搜索该文件,而不必在PHP中编写各种查询。这是我的PHP代码:
$page = file_get_contents( filter_var( $_POST[url], FILTER_SANITIZE_URL ) );
die( json_encode( $page ) );
如果加载的页面太大,PHP将读取整个文档,但json_encoding它只会给出文件的第一部分,而不是整个文件。我找不到关于json传递数据的大小限制的任何内容,但显然有一个。
问题:是否有一种解决方法可以防止只传输部分文件?
我需要从其他域中获取文件,因此在jQuery中读取文件的内容实际上并不是一种选择。
答案 0 :(得分:15)
帮助其他可能遇到无法用json_encode解释的问题的人。我发现了解json错误消息函数会有所帮助。
json_last_error_msg();
我遇到了类似的问题,但与文件大小无关。我在数据库中格式错误的utf-8。你可以像这样检查你的json
$json = json_encode($data);
if ($json)
echo $json;
else
echo json_last_error_msg();
这里的PHP文档json_last_error_msg
答案 1 :(得分:12)
PHP 5.3:ext/json/json.c
PHP 7(当前):ext/json/json.c
JSON序列化数据的大小没有内置限制。不管怎么说都不是。因此我假设您已经遇到PHP内存限制或其他问题。
json_encode
字符串始终只添加一些转义和外部双引号。在内部,这意味着一点内存加倍(临时字符串连接和utf8_to_utf16转换/检查),所以我已经遇到了我的32MB php内存限制,已经有8MB字符串。但除此之外,json.c
答案 2 :(得分:0)
我解决了类似的情况。 所以,我在这里写。
我的网站还响应了损坏的jsondata。大约8MB。
原因是存储空间不足。 df的命令结果显示为“ used 100%”。
我删除了一些文件。然后解决。