Как наложить ограничения памяти на сценарий оболочки?

У меня есть 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 (память и виртуальная память), предотвращая зависание системы, если что-то пойдет не так.

Мой вопрос:
Как ограничить объем памяти, используемой этим сценарием оболочки, до определенного количества?

10
задан 23 May 2017 в 15:39

1 ответ

Вы можете ограничить использование памяти с помощью Bash Script, выполнив следующие действия.

Ограничить использование памяти в КБ (2 ГБ в этом примере):

ulimit -m 2048000

Ограничить использование виртуальной памяти:

ulimit -v 2048000

Установить ограничение виртуальной памяти как жесткое ограничение, чтобы процесс будет убит при превышении этого предела:

ulimit -H -v

Я думаю, что это может делать то, что вы хотите.

0
ответ дан 23 May 2017 в 15:39

Другие вопросы по тегам:

Похожие вопросы: