PHP — ограничение памяти

#php

#php

Вопрос:

 max_execution_time = 30     ; Maximum execution time of each script, in seconds
max_input_time = 60 ; Maximum amount of time each script may spend parsing request data
;max_input_nesting_level = 64 ; Maximum input variable nesting level
memory_limit = 128M      ; Maximum amount of memory a script may consume (128MB)
  

По умолчанию 128 МБ, все в порядке

Но когда я редактирую php.ini следующим образом

  memory_limit = 128000000     ; Maximum amount of memory a script may consume (128MB)
  

Я получил, я замечаю :

Неустранимая ошибка: допустимый размер памяти 262144

128000000 @ 128 МБ или apache не знают 128000000

Комментарии:

1. Пожалуйста, покажите точную строку в php.ini, которую вы используете.

2. Если это сработает, не исправляйте это!

3. Я хочу знать, правильный способ установить это значение 128M или 128000000 или оба способа верны

4. Я думаю, что у вас проблема в вашем коде. Можете ли вы предоставить нам свои строки, в которых произошла ошибка? Возможно, это неправильная рекурсия или цикл.

Ответ №1:

Мы не знаем, как анализатор php ini обрабатывает ваш запрос, если вы не используете их стандартный способ записи размера памяти с использованием буквы в конце.

Одно можно сказать наверняка, хотя, даже если это не равно 262144, 128 000 000 никогда не будут 128 МБ, а скорее 122 МБ, потому что, как я уверен, вы знаете, 1 МБ = 1024 * 1024 байта!!

Если вам действительно нужно то, что вы делаете, вы можете попробовать: 128000000b (обратите внимание на ‘b’ в конце числа), но я не уверен, что разработчик синтаксического анализатора php ini когда-либо думал, что кто-то будет забрасывать их байтами.

Ответ №2:

Правильный способ — использовать unit ( 128M )

Ответ №3:

Поведение по умолчанию, если задано целое число, заключается в интерпретации его как байтов. Смотрите http://php.net/manual/en/ini.core.php. И, как указал Яхель, 1 МБ = 1024 байта. Итак, если вы хотите 128 МБ, вы либо пишете «128M», либо «134217728»

Также помните, что вы всегда можете проверить, на что установлен ваш лимит памяти с помощью phpinfo(); Если ваш php не был скомпилирован с помощью —enable-memory-limit в строке configure (если вы используете версию более раннюю, чем 5.2.1), то ничего из этого не сработает.

Ответ №4:

Вы должны написать, как показано ниже.

оно должно быть кратно 8 memory_limit = 128 Мб ; Максимальный объем памяти, который может использовать скрипт (128 МБ)

По умолчанию он занимает память в МБ.