PHP json_encode大小限制?

pat*_*ick 11 php size json limit

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

$page = file_get_contents( filter_var( $_POST[url], FILTER_SANITIZE_URL ) );
die( json_encode( $page ) );
Run Code Online (Sandbox Code Playgroud)

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

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

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

Cod*_*man 18

帮助那些可能遇到无法用json_encode解释的问题的人.我发现了解json错误消息函数是有帮助的.

json_last_error_msg();
Run Code Online (Sandbox Code Playgroud)

我遇到了类似的问题,但它与文件大小无关.我在数据库中输入了utf-8格式错误.你可以像这样检查你的json

$json = json_encode($data);

if ($json)
    echo $json;
else
    echo json_last_error_msg();
Run Code Online (Sandbox Code Playgroud)

这里有PHP文档json_last_error_msg


mar*_*rio 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

  • 尺寸小于8Mb.我通过不将东西作为JSON导入来"修复"它(它只是一种解决方法).这不是PHP内存限制,否则我无法通过绕过JSON来"解决"问题 (2认同)