Tengo un script PHP que, si bien una carpeta contiene archivos XML, los procesará en la base de datos.
Actualmente, el servidor ejecuta PHP versión 5.3.10 y hay un informe de error sobre problemas de memoria activados por ZEND_MM_HEAP
un bucle.
Esto hace que el PHP no libere memoria correctamente, lo que genera un error y un bloqueo del script:
zend_mm_heap is corrupted
Se encuentran algunas soluciones , pero no tengo acceso a la configuración del servidor.
Para lidiar con esto, he preparado el siguiente script bash para cuidar el ciclo, dejando que el script PHP solo sea responsable al procesar el archivo 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
Mi objetivo ahora es tener esta asignación de memoria bash limitada (memoria y memoria virtual), evitando así que se bloquee el sistema si algo sale mal.
Mi pregunta es:
¿Cómo puedo limitar la memoria utilizada por este script de shell a una cantidad específica?
fuente
export USE_ZEND_ALLOC=0
.Respuestas:
Puede limitar el uso de memoria mediante un Bash Script, haciendo lo siguiente.
Limite el uso de memoria por kb (2GB en este ejemplo):
Limite el uso de memoria virtual:
Establezca el límite de memoria virtual en límite rígido, de modo que el proceso se cancele cuando se exceda este límite:
Creo que esto puede hacer lo que quieras.
fuente