Eu tenho um script PHP que, enquanto uma pasta contém arquivos XML, os processará no banco de dados.
Atualmente, o servidor está executando o PHP versão 5.3.10 e há um relatório de erro sobre problemas de memória acionados por ZEND_MM_HEAP
um loop.
Isso faz com que o PHP não libere memória adequadamente, levando a um erro e uma falha no script:
zend_mm_heap is corrupted
Algumas soluções foram encontradas, mas não tenho acesso às configurações do servidor.
Para lidar com isso, preparei o seguinte script bash para cuidar do loop, deixando o script PHP responsável apenas pelo processamento do arquivo 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
Meu objetivo agora é limitar essa alocação de memória do bash (memória e memória virtual), impedindo a interrupção do sistema se algo der errado.
Minha pergunta é:
Como posso limitar a memória usada por este script de shell para uma quantidade específica?
fonte
export USE_ZEND_ALLOC=0
.Respostas:
Você pode limitar o uso da memória por um script Bash, fazendo o seguinte.
Limite o uso de memória em kb (2 GB neste exemplo):
Limitar o uso da memória virtual:
Defina o limite da memória virtual como limite rígido, para que o processo seja interrompido ao exceder esse limite:
Eu acho que isso pode fazer o que você quiser.
fonte