Я использую прокси-сервер PHP для получения содержимого файла. Я хочу выполнить поиск через этот файл с помощью мощных параметров jQuery без необходимости писать всевозможные запросы в PHP. Вот мой PHP-код:
$page = file_get_contents( filter_var( $_POST[url], FILTER_SANITIZE_URL ) ); die( json_encode( $page ) );
Если загруженная страница становится слишком большой, PHP будет читать весь документ, но json_encoding будет давать только первую часть файла, а не весь файл. Я не могу найти ничего о пределе размера для переданных json данных, но, по-видимому, есть один.
вопрос: есть ли временное решение, чтобы предотвратить передачу только части файла?
Мне нужно захватить файлы из других доменов, поэтому чтение содержимого файла в jQuery на самом деле не является вариантом.
Чтобы помочь другим, кто может столкнуться с проблемами, которые они не могут объяснить с помощью 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
PHP 5.3: ext / json / json.c
PHP 7 (текущий): ext / json / json.c
Не существует встроенного ограничения размера сериализованных данных JSON. В любом случае, не для строк. Поэтому я предполагаю, что вы столкнулись с ограничением памяти PHP или чем-то еще.
json_encode
Строка последовательно добавляет несколько экранов и внешние двойные кавычки. Внутри это означает удвоение бит-памяти (временная конкатенация строк и преобразование / проверка utf8_to_utf16), так что я столкнулся с моим 32-мегабайтным флэш-памятью с длиной строки 8 МБ. Но кроме этого, в json.c
, похоже, нет никаких ограничений.