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