J'ai un script PHP qui, alors qu'un dossier contient des fichiers XML, les traitera dans la base de données.
Actuellement, le serveur exécute PHP version 5.3.10 et il y a un rapport de bogue sur les problèmes de mémoire déclenchés par ZEND_MM_HEAP
une boucle.
Cela empêche le PHP de libérer de la mémoire correctement, ce qui entraîne une erreur et un crash de script:
zend_mm_heap is corrupted
Certaines solutions sont trouvées, mais je n'ai pas accès aux paramètres du serveur.
Pour y faire face, j'ai préparé le script bash suivant pour prendre en charge la boucle, en laissant le script PHP uniquement responsable en traitant le fichier 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
Mon objectif est maintenant d'avoir cette allocation de mémoire bash limitée (mémoire et mémoire virtuelle), l'empêchant ainsi de bloquer le système en cas de problème.
Ma question est:
comment puis-je limiter la mémoire utilisée par ce script shell à une quantité spécifique?
export USE_ZEND_ALLOC=0
.Réponses:
Vous pouvez limiter l'utilisation de la mémoire par un script Bash, en procédant comme suit.
Limitez l'utilisation de la mémoire par ko (2 Go dans cet exemple):
Limitez l'utilisation de la mémoire virtuelle:
Définissez la limite de mémoire virtuelle comme limite stricte, de sorte que le processus soit tué en cas de dépassement de cette limite:
Je pense que cela peut faire ce que vous voulez.
la source