У меня есть PHP-скрипт, который, хотя папка содержит файлы XML, будет обрабатывать их в базе данных.
В настоящее время сервер работает под управлением PHP версии 5.3.10, и имеется отчет об ошибке о проблемах с памятью, вызванных ZEND_MM_HEAP
в цикле.
Это приводит к тому, что PHP не освобождает память должным образом, что приводит к ошибке и сбою скрипта:
zend_mm_heap is corrupted
Некоторые решения найдены, но У меня нет доступа к настройкам сервера. Sup>
Чтобы справиться с этим, я подготовил следующий скрипт 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 (память и виртуальная память), предотвращая зависание системы, если что-то пойдет не так.
Мой вопрос:
Как ограничить объем памяти, используемой этим сценарием оболочки, до определенного количества?
Вы можете ограничить использование памяти с помощью Bash Script, выполнив следующие действия.
Ограничить использование памяти в КБ (2 ГБ в этом примере):
ulimit -m 2048000
Ограничить использование виртуальной памяти:
ulimit -v 2048000
Установить ограничение виртуальной памяти как жесткое ограничение, чтобы процесс будет убит при превышении этого предела:
ulimit -H -v
Я думаю, что это может делать то, что вы хотите.