PHP json_encode大小限制?

2022-08-31 00:23:00

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

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

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

问题:是否有解决方法可以仅阻止传输部分文件?

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


答案 1

为了帮助那些可能遇到无法用json_encode解释的问题的人。我发现了解json错误msg函数很有帮助。

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


答案 2

PHP 5.3: ext/json/json.c
PHP 7 (current): ext/json/json.c

对 JSON 序列化数据的大小没有内置限制。反正不是字符串。因此,我假设您遇到了PHP内存限制或其他问题。

json_encode一个字符串一致只是添加一些转义和外部双引号。在内部,这意味着有点内存加倍(临时字符串串联和utf8_to_utf16转换/检查),因此我已经遇到了32MB php内存限制,其中8MB字符串。但除此之外,似乎没有任意的限制json.c


推荐