Php максимальная длина переменной

Какова максимальная длина строки в PHP?

Итак, насколько велика $variable в PHP? Я попытался проверить это, но я не уверен, что у меня достаточно системной памяти (~ 2gb). Я полагаю, что должен быть какой-то предел. Что происходит, когда строка становится слишком большой? Является ли он конкатенированным, или PHP генерирует исключение?

7 Solutions collect form web for “Какова максимальная длина строки в PHP?”

Не существует архитектурного предела для одной строковой переменной per se.
edit: В качестве комментария пользователя @Pacerier ниже, в руководстве по PHP теперь говорится:

Примечание: строка может достигать 2 ГБ.

(это примечание не было в руководстве, когда я впервые ответил на этот вопрос в 2010 году).

Вы можете разгладить содержимое всего файла, например, используя file_get_contents()

Тем не менее, PHP-скрипт имеет ограничение на общую память, которую он может выделить для всех переменных при выполнении данного сценария, поэтому это также ограничивает длину одной строковой переменной.

Это ограничение является директивой memory_limit в файле конфигурации php.ini. Предел памяти по умолчанию равен 128 МБ в PHP 5.2 и 8 МБ в более ранних версиях.

Если вы не укажете ограничение памяти в файле php.ini, оно использует значение по умолчанию, которое скомпилировано в двоичный файл PHP. В теории вы можете изменить исходный код и перестроить PHP, чтобы изменить это значение по умолчанию.

Если вы укажете -1 как ограничение памяти в вашем файле php.ini, он прекратит проверку и позволит вашему сценарию использовать столько памяти, сколько будет выделено операционной системой. Это по-прежнему практический предел, но зависит от системных ресурсов и архитектуры.

Строка может достигать 2 ГБ.
Источник

Длина строки PHP ограничена тем, как строки представлены в PHP; память не имеет к этому никакого отношения.

Согласно phpinternalsbook.com , строки хранятся в struct , и поскольку максимальный размер int в C равен 4 байтам, это фактически ограничивает максимальный размер строки до 2 ГБ.

В новом предстоящем php7 среди многих других функций они добавили поддержку строк размером больше 2 ^ 31 байта :

Поддержка строк с длиной> = 2 ^ 31 байта в 64-битных строках.

К сожалению, они не указали, насколько это может быть больше.

Максимальная длина строковой переменной равна только 2GiB – (2 ^ (32-1) бит). Переменные могут быть адресованы на основе символа (8 бит / 1 байт), а адресация выполняется целыми знаками, поэтому предел – это то, что есть. Массивы могут содержать несколько переменных, каждая из которых соответствует предыдущему ограничению, но может иметь общий кумулятивный размер до memory_limit, для которого также подчиняется строковая переменная.

Чтобы правильно ответить на этот вопрос, вам нужно рассмотреть внутренности PHP или цель, для которой построен PHP.

Чтобы ответить на это с типичной точки зрения Linux на x86 …

Строки всегда равны 2 ГБ, так как длина всегда 32 бит, а бит – впустую, потому что он использует int, а не uint. int нецелесообразно для длин более 2 ГБ, поскольку для этого требуется бросок, чтобы избежать арифметических или «сравнительных» сравнений. Дополнительный бит, вероятно, используется для проверки переполнения.

Читайте также:  Пример

Странно, хеш-ключи могут внутренне поддерживать 4 ГБ, поскольку используется uint, хотя я никогда не тестировал это. Ключи хэша PHP имеют +1 к длине для конечного нулевого байта, который, насколько мне известно, игнорируется, поэтому для этого случая с корнем может потребоваться беззнаковое, а не для более длинных ключей.

32-битная система может налагать больше внешних ограничений.

Источник

Какова максимальная длина строки в PHP?

Итак, насколько велика $variable в PHP? Я попытался проверить это, но я не уверен, что у меня достаточно системной памяти (~ 2gb). Я полагаю, что должен быть какой-то предел. Что происходит, когда строка становится слишком большой? Является ли он конкатенированным, или PHP генерирует исключение?

Примечание. Начиная с PHP 7.0.0, нет особых ограничений относительно длины строки в 64-битных сборках. В 32-битных сборках и в более ранних версиях строка может достигать 2 ГБ (максимум 2147483647 байт)

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

Вы можете разгладить содержимое всего файла, например, используя file_get_contents()

Тем не менее, PHP-скрипт имеет ограничение на общую память, которую он может выделить для всех переменных при выполнении данного сценария, поэтому это также ограничивает длину одной строковой переменной.

Это ограничение является директивой memory_limit в файле конфигурации php.ini. Предел памяти по умолчанию равен 128 МБ в PHP 5.2 и 8 МБ в более ранних версиях.

Если вы не укажете ограничение памяти в файле php.ini, оно использует значение по умолчанию, которое скомпилировано в двоичный файл PHP. В теории вы можете изменить исходный код и перестроить PHP, чтобы изменить это значение по умолчанию.

Если вы укажете -1 как ограничение памяти в вашем файле php.ini, он прекратит проверку и позволит вашему сценарию использовать столько памяти, сколько будет выделено операционной системой. Это по-прежнему практический предел, но зависит от системных ресурсов и архитектуры.

Строка может достигать 2 ГБ.
Источник

Длина строки PHP ограничена тем, как строки представлены в PHP; память не имеет к этому никакого отношения.

Согласно phpinternalsbook.com , строки хранятся в struct , и поскольку максимальный размер int в C равен 4 байтам, это фактически ограничивает максимальный размер строки до 2 ГБ.

В новом предстоящем php7 среди многих других функций они добавили поддержку строк размером больше 2 ^ 31 байта :

Поддержка строк с длиной> = 2 ^ 31 байта в 64-битных строках.

К сожалению, они не указали, насколько это может быть больше.

Максимальная длина строковой переменной равна только 2GiB – (2 ^ (32-1) бит). Переменные могут быть адресованы на основе символа (8 бит / 1 байт), а адресация выполняется целыми знаками, поэтому предел – это то, что есть. Массивы могут содержать несколько переменных, каждая из которых соответствует предыдущему ограничению, но может иметь общий кумулятивный размер до memory_limit, для которого также подчиняется строковая переменная.

Чтобы правильно ответить на этот вопрос, вам нужно рассмотреть внутренности PHP или цель, для которой построен PHP.

Читайте также:  Тег html перенос страницы

Чтобы ответить на это с типичной точки зрения Linux на x86 …

Строки всегда равны 2 ГБ, так как длина всегда 32 бит, а бит – впустую, потому что он использует int, а не uint. int нецелесообразно для длин более 2 ГБ, поскольку для этого требуется бросок, чтобы избежать арифметических или «сравнительных» сравнений. Дополнительный бит, вероятно, используется для проверки переполнения.

Странно, хеш-ключи могут внутренне поддерживать 4 ГБ, поскольку используется uint, хотя я никогда не тестировал это. Ключи хэша PHP имеют +1 к длине для конечного нулевого байта, который, насколько мне известно, игнорируется, поэтому для этого случая с корнем может потребоваться беззнаковое, а не для более длинных ключей.

32-битная система может налагать больше внешних ограничений.

Источник

Какова максимальная длина строки в PHP?

Итак, насколько большим может быть $variable в PHP? Я пытался проверить это, но я не уверен, что у меня достаточно системной памяти (~ 2 ГБ). Я считаю, что должен быть какой-то предел. Что происходит, когда строка становится слишком большой? Является ли он конкатенацией или PHP выдает исключение?

@sAc Я хочу узнать больше о PHP. Я знаю, что не могу использовать php для тяжелых операций с памятью из-за серьезных утечек памяти. — person rook &nbsp schedule 06.07.2010

В php7 они снимают это ограничение: stackoverflow.com/a/31085071/1090562 — person Salvador Dali &nbsp schedule 27.06.2015

Я бы изменил заголовок, потому что не OP и не ответы отвечают на главный вопрос о длине, все они говорят о размере. — person jave.web &nbsp schedule 12.06.2016

Ответы (6)

Примечание. Начиная с PHP 7.0.0 нет особых ограничений на длину строки в 64-битных сборках. В 32-разрядных сборках и в более ранних версиях длина строки может достигать 2 ГБ (максимум 2 147 483 647 байт).

В PHP 5.x длина строки была ограничена 2 31 -1 байтами, поскольку внутренний код записывал длину в виде 32-разрядного целого числа со знаком. Вы можете просмотреть содержимое всего файла, например, используя file_get_contents() . Однако PHP-скрипт имеет ограничение на общую память, которую он может выделить для всех переменных в заданном выполнении скрипта, так что это фактически также накладывает ограничение на длину одной строковой переменной. Это ограничение указано в директиве memory_limit в файле конфигурации php.ini. Ограничение памяти по умолчанию составляет 128 МБ в PHP 5.2 и 8 МБ в более ранних версиях. Если вы не укажете лимит памяти в файле php.ini, он использует значение по умолчанию, которое скомпилировано в двоичный файл PHP. Теоретически вы можете изменить исходный код и пересобрать PHP, чтобы изменить это значение по умолчанию. Если вы укажете -1 в качестве лимита памяти в вашем файле php.ini, он прекратит проверку и позволит вашему сценарию использовать столько памяти, сколько будет выделено операционной системой. Это все еще практический предел, но он зависит от системных ресурсов и архитектуры. Комментарий от @c2: Вот тест:

Итак, как лучше всего работать с ограничением памяти, если нам действительно нужны длинные строки? — person Pacerier; 06.06.2013

Когда PHP.net указывает, что строка Note может достигать 2 ГБ. php.net/manual/en/language.types.string.php они имеют в виду, что он может более 2 ГБ? — person Pacerier; 06.06.2013

Читайте также:  Win 10 install php

@Pacerier, хороший улов! Этого примечания не было на странице руководства, когда я впервые ответил на этот вопрос в 2010 году. Я отредактирую свой ответ выше. — person Bill Karwin; 06.06.2013

Пожалуйста, смотрите мой ответ ниже, ограничение накладывается тем, как строки представлены в PHP, а не ограничением памяти. — person c 2; 05.04.2014

@ c2, +1 за переход к источнику, но см. мою демонстрацию ограничения памяти выше. — person Bill Karwin; 05.04.2014

@BillKarwin, я до сих пор не уверен, что это правильный ответ. Я согласен с тем, что размер строки зависит от конфигурации памяти PHP, но жесткое ограничение максимального размера строки PHP в конечном итоге ограничено ее внутренней структурой? — person c 2; 05.04.2014

@ c2, ну, я думал, что обратился к этому в начале своего ответа, когда редактировал его после комментария Пейсерье. В руководстве указано, что ограничение длины строки составляет 2 ГБ, но в данной установке PHP вполне вероятно, что memory_limit настроено намного меньше, чем это. — person Bill Karwin; 06.04.2014

@BillKarwin, новое обновление: в руководстве теперь указано максимум 2147483647 байт (в отличие от неявного 2147483648). — person Pacerier; 14.01.2016

Источник

Какова максимальная длина строки в PHP?

Итак, насколько большой может $variable в PHP? Я попытался проверить это, но я не уверен, что у меня достаточно системной памяти (~ 2gb). Я полагаю, что должен быть какой-то предел. Что происходит, когда строка становится слишком большой? Является ли он конкатенированным, или PHP генерирует исключение?

@sAc Я хочу узнать больше о PHP. Я знаю, что не могу использовать php для тяжелых операций с памятью из-за серьезных утечек памяти.

Я бы поменял название, потому что не ОП и не ответы отвечают на главный вопрос о длине , они все говорят о размере .

7 ответов

Примечание. С PHP 7.0.0 особых ограничений относительно длины строки в 64-битных сборках нет. В 32-битных сборках и в более ранних версиях строка может достигать 2 ГБ (максимум 2147483647 байт)

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

Вы можете разгладить содержимое всего файла, например, используя file_get_contents()

Однако PHP script имеет ограничение на общую память, которую он может выделить для всех переменных в данном выполнении script, поэтому это также ограничивает длину одной строковой переменной.

Этот предел является директивой memory_limit в файле конфигурации php.ini. Предел памяти по умолчанию равен 128 МБ в PHP 5.2 и 8 МБ в более ранних версиях.

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

Если вы укажете -1 как ограничение памяти в файле php.ini, прекратите проверку и разрешите script использовать столько же памяти, сколько будет выделена операционная система. Это по-прежнему практический предел, но зависит от системных ресурсов и архитектуры.

Источник

Оцените статью