PHP json_encode大小限制?

时间:2011-05-31 22:44:14

标签: php size limit json

我正在使用PHP代理来获取文件的内容。我想使用功能强大的jQuery选项搜索该文件,而不必在PHP中编写各种查询。这是我的PHP代码:

$page = file_get_contents( filter_var( $_POST[url], FILTER_SANITIZE_URL ) );
die( json_encode( $page ) );

如果加载的页面太大,PHP将读取整个文档,但json_encoding它只会给出文件的第一部分,而不是整个文件。我找不到关于json传递数据的大小限制的任何内容,但显然有一个。

问题:是否有一种解决方法可以防止只传输部分文件?

我需要从其他域中获取文件,因此在jQuery中读取文件的内容实际上并不是一种选择。

3 个答案:

答案 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%”。

我删除了一些文件。然后解决。