PHP json_encode size limit?

谁说胖子不能爱 提交于 2019-11-27 06:44:14

问题


I'm using a PHP proxy to get the contents of a file. I want to search through that file using the powerfull jQuery options, without having to write all kinds of queries in PHP. Here is my PHP code:

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

If the page loaded gets too big PHP will read the entire document, but json_encoding it will only give the first part of the file, not the entire file. I can't find anything about a size limit on json passed data, but apparently there is one.

the question: is there a workaround to prevent only part of the file being transfered?

I need to grab files from other domains, so reading the contents of a file in jQuery is not really an option.


回答1:


To help others who may be running into problems that they can't explain with json_encode. I've found it helps to know about the json error msg function.

json_last_error_msg();

I was having a similar problem but it wasn't related to file size. I had malformed utf-8 in the database. You can check your json like this

$json = json_encode($data);

if ($json)
    echo $json;
else
    echo json_last_error_msg();

PHP docs here json_last_error_msg




回答2:


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

There is no built-in restriction to the size of JSON serialized data. Not for strings anyway. I would therefore assume you've run into PHPs memory limit or something.

json_encodeing a string consistently just adds some escaping and the outer double quotes. Internally that means a bit memory doubling (temporary string concatenation and utf8_to_utf16 conversion/check), so that I ran into my 32MB php memory limit with an 8MB string already. But other than that, there seem to be no arbitrary limits in json.c



来源:https://stackoverflow.com/questions/6194393/php-json-encode-size-limit

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!