У меня есть сценарий PHP, который, хотя папка содержит файлы XML, будет обрабатывать их в базе данных.
В настоящее время сервер работает под управлением PHP версии 5.3.10, и в нем содержится отчет об ошибках памяти, возникающих ZEND_MM_HEAP
в цикле.
Это приводит к тому, что PHP не освобождает память должным образом, что приводит к ошибке и падению скрипта:
zend_mm_heap is corrupted
Некоторые решения найдены, но у меня нет доступа к настройкам сервера.
Чтобы справиться с этим, я подготовил следующий скрипт bash, чтобы позаботиться о цикле, оставив PHP-скрипт ответственным только за обработку XML-файла:
#!/bin/bash
# Check for files to process
# If files are present, call
# the PHP script
DIR="/path/to/dir/with/files"
while [ "$(ls -A $DIR)" ]; do
php /path/to/php/script/myscript.php
done
Теперь моя цель - ограничить выделение памяти для bash (память и виртуальная память), предотвращая зависание системы, если что-то пойдет не так.
Мой вопрос:
как я могу ограничить объем памяти, используемой этим сценарием оболочки, до определенного количества?
источник
export USE_ZEND_ALLOC=0
.Ответы:
Вы можете ограничить использование памяти с помощью Bash Script, выполнив следующие действия.
Ограничьте использование памяти килобайтами (в данном примере 2 ГБ):
Ограничить использование виртуальной памяти:
Установите ограничение виртуальной памяти равным жесткому ограничению, чтобы при превышении этого предела процесс прерывался:
Я думаю, что это может делать то, что вы хотите.
источник