Подтвердить что ты не робот

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

4b9b3361

Ответ 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