Предел размера json_encode PHP?
Я использую прокси-сервер 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 error msg.
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
Ответ 2
PHP 5.3: ext/json/json.c
PHP 7 (текущий): ext/json/json.c
Не существует встроенного ограничения размера сериализованных данных JSON. В любом случае, не для строк. Поэтому я предполагаю, что вы столкнулись с ограничением памяти PHP или чем-то еще.
json_encode
Строка последовательно добавляет несколько экранов и внешние двойные кавычки. Внутри это означает удвоение бит-памяти (временная конкатенация строк и преобразование/проверка utf8_to_utf16), так что я столкнулся с моим 32-мегабайтным флэш-памятью с длиной строки 8 МБ. Но кроме этого, по-видимому, в json.c