У меня более 60% свободной оперативной памяти, но я не могу запустить простой PHP-файл

У меня более 60% свободной оперативной памяти, но я не могу запустить простой PHP-файл

Я пытаюсь запустить простой .phpфайл в своей локальной среде:
(Ubuntu 15.10 - Intel® Core™ i7-4600U CPU @ 2.10GHz × 4 - 64-бит - 8 ГБ ОЗУ)

Скриншот

Итак, вы видите, что у меня более 60% свободной оперативной памяти, но я не знаю, почему у меня всегда возникает эта ошибка:

Erreur : Allowed memory size of 4244635648 bytes exhausted (tried to allocate 4294967674 bytes).

Я попытался выполнить решение этой похожей проблемы:Связь. Но это не решает мою проблему.

Спасибо

решение1

В PHP есть настройка, которая ограничивает объем памяти, который может использовать один скрипт. Не имеет значения, сколько всего оперативной памяти у вашей системы, если вы превысите это значение.

Если вы работаете в консоли, то файл, который на это влияет, скорее всего, /etc/php5/cli/php.ini и содержит строку следующего вида:

memory_limit = XXXXXXX

Чтобы полностью снять ограничение, измените его следующим образом:

memory_limit = -1

Однако, как прокомментировали другие, ваш скрипт уже пытается использовать более 4 ГБ ОЗУ. Возможно, вам следует переосмыслить то, что вы делаете, или поискать ошибки в коде, которые могут вызвать это, например, бесконечный цикл. Большинство скриптов PHP, даже скриптов CLI, должны использовать менее 256 МБ, даже для самых сложных задач. PHP не предназначен для загрузки файла размером 2 ГБ в память и работы с ним в переменных или для выгрузки целых баз данных в массивы. Многие программисты, с которыми я работал, совершают такие ошибки. Вместо этого поместите это хранилище туда, где оно работает лучше всего — оставьте его в БД и работайте с ним построчно или оставьте его в файловой системе и сделайте то же самое.

И если это веб-скрипт, а не то, что вы запускаете в CLI, вы, вероятно, не хотите возиться с настройкой memory_limit, по крайней мере, не в районе 4 ГБ или больше. Это плохая идея для веб-сервера, который обслуживает несколько клиентов.

Связанный контент