Я столкнулся с общей «Неустранимая ошибка: нехватка памяти (выделено 30408704) (пыталась выделить 24 байта) .. . "PHP Неустранимая ошибка. Страницы, обслуживаемые через Apache, не демонстрируют такого поведения.PHP-скрипты командной строки игнорируют директивы php.ini и ini_set ('memory_limit', ...)
Я попытался следующие:
- Увеличение memory_limit в php.ini на гораздо большее значение.
- Увеличение memory_limit внутри самого сценария с помощью вызовов
ini_set('memory_limit', -1)
,ini_set('memory_limit', '-1')
,ini_set('memory_limit', 100000000)
,ini_set('memory_limit', '128M')
и т.д. unset()
ИНГ ненужных массивов и объектов поощрять сборщик мусор, чтобы освободить память.- Связаться с веб-хостинга. Они, как правило, очень способны и хорошо осведомлены, но также не смогли мне помочь в этом вопросе.
- Я попытался явно включить файл php.ini, используя флаг командной строки
-c
, чтобы вручную выбрать определенные файлы php.ini с различными значениями. - Я попытался установить memory_limit в php.ini, используя как необработанные числа байтов, так и значения, такие как 64M, 128M и т. Д.
- Хостинг-провайдер смог запустить скрипт как root без проблем, но испытывает то же самое я делаю при запуске, используя моего пользователя без полномочий root. Возможно, есть какие-то проблемы с разрешениями?
Независимо от того, что я пытаюсь, сообщение об ошибке одно и то же. Похоже, что мои сценарии командной строки игнорируют изменения до memory_limit
.
Я стараюсь, чтобы мои сценарии были эффективными с точки зрения памяти, но в настоящее время мне нужно разбирать большие количества HTML через Simple HTML DOM, и именно в синтаксическом анализе я испытываю проблемы с памятью. В попытке уменьшить объем памяти сценария, я попытался использовать DOMDocument вместо этого. Это тоже не помогает. Фактически, ошибка с памятью теперь запускается в другом месте сценария.
Мой вопрос: кто-нибудь испытал это или подобную проблему? У вас есть какие-нибудь рекомендации?
спасибо.
Хорошо, это значительно сложнее, но вам нужно будет проверить свой код для бесконечных циклов. Я рекомендую debug-and-conquer debug для этого. Позвольте мне привести вам пример кода, который выдает ошибку «Недостаточно памяти»: 'function returnSomething ($ what) {return returnSomething ($ what); } returnSomething (true); 'dump 'Fatal error: Разрешенный размер памяти из 134217728 байт исчерпан (пытался выделить 261900 байт) в ...' – Dereleased
Нет кубиков. Мои администраторы учетной записи хостинга смогли запустить мой скрипт без каких-либо проблем в качестве пользователя root. Кроме того, мой сценарий работает отлично на моей локальной машине. – jkndrkn