«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Насколько большой может быть строка в PHP?

Насколько большой может быть строка в PHP?

Опубликовано 9 ноября 2024 г.
Просматривать:861

How Large Can a String Be in PHP?

Каков верхний предел длины строки в PHP?

Запрос:
Можете ли вы пролить свет на пределы емкости хранения строк в PHP? Я попытался оценить это, но не уверен, достаточно ли памяти моей системы (2 ГБ) для теста. Есть ли предустановленный лимит? Какие действия происходят, когда строка превышает этот порог – конкатенация или ошибка?

Ответ:
Согласно документации PHP.net, ограничения на длину строки были устранены в PHP 7.0.0 для 64-битных сборок. Для 32-битных сборок и более ранних версий максимальный размер строк мог достигать 2 ГБ (2147483647 байт).

В PHP 5.x размер строк был ограничен 231-1 байтом, потому что внутренний код отслеживал их длину в виде 32-битного целого числа со знаком.

Дополнительно Рекомендации:
Вы можете загрузить содержимое всего файла, используя такие функции, как file_get_contents(). Однако общее распределение памяти PHP-скрипта для всех переменных ограничивает длину отдельных строковых переменных.

Директива ограничения памяти:
Директива Memory_limit в файле конфигурации php.ini устанавливает это предел. Его значение по умолчанию составляет 128 МБ в PHP 5.2 и 8 МБ в более ранних версиях.

Если в php.ini не установлен параметр Memory_limit, по умолчанию используется скомпилированное значение в двоичном файле PHP, которое можно изменить путем перекомпиляции PHP с пользовательским значением по умолчанию. .

Установка для параметра Memory_limit значения -1 в php.ini отключает проверку и позволяет вашему скрипту использовать столько памяти, сколько выделяет ОС (все еще зависит от практические и специфичные для системы ограничения).

Тестовый пример:
Следующий код демонстрирует, как проверить использование памяти и ограничения выделения строк:

// Limit memory usage to 1MB
ini_set('memory_limit', 1024*1024);

// Basic operation uses about 768KB
printf("memory: %d\n",  memory_get_usage(true));

$str = str_repeat('a',  255*1024);
echo "Allocated string of 255KB\n";

// All 1MB of memory has been allocated
printf("memory: %d\n",  memory_get_usage(true));

// Exceeding the limit causes a fatal error
$str = str_repeat('a',  256*1024);
echo "Allocated string of 256KB\n";
printf("memory: %d\n",  memory_get_usage(true));
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3