PHP 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 на самом деле не вариант.

2 ответов


чтобы помочь другим, которые могут столкнуться с проблемами, которые они не могут объяснить с помощью json_encode. Я нашел, что это помогает узнать о функции msg ошибки JSON.

json_last_error_msg();

у меня была аналогичная проблема, но она не была связана с размером файла. Я исказил utf-8 в базе данных. Вы можете проверить свой json так

$json = json_encode($data);

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

PHP docs здесь json_last_error_msg


PHP 5.3:ВН/в JSON/json-файле.c
PHP 7 (текущий):ВН/в JSON/json-файле.c

нет встроенного ограничения на размер сериализованных данных JSON. Во всяком случае, для струн. Поэтому я бы предположил, что вы столкнулись с ограничением памяти PHPs или чем-то еще.

json_encodeing строка последовательно просто добавляет некоторые экранирование и внешние двойные кавычки. Внутренне это означает удвоение битовой памяти (временная конкатенация строк и utf8_to_utf16 conversion / check), так что я столкнулся с ограничением памяти php 32MB с строкой 8MB уже. Но кроме этого, кажется, нет никаких произвольных ограничений в json.c