Générique “Tué” erreur dans le script PHP
Je suis en train de travailler sur une tâche CRON qui appelle un script PHP qui fait beaucoup de travail de base de données avec des boucles.
Il exécute correctement lorsque j'limiter le jeu de données, mais quand je le lance contre l'ensemble de données, les erreurs de script avec un message:
Killed
set_time_limit (0) et memory_limit est (-1)
Voici le code de la section où il est constamment meurt:
echo "I'm in _getMemberDemographicAttrs\n";
if (! empty ( $member_id )) {
$query .= ' AND member_id = ' . $member_id;
}
$result = mysql_query ( $query, $this->_db );
if ($result) {
while ( $rule = mysql_fetch_assoc ( $result ) ) {
$rules [] = $rule;
}
if (! empty ( $rules )) {
mysql_free_result ( $result );
echo "I'm leaving _getMemberDemographicAttrs\n";
return $rules;
}
}
La sortie ressemble à ceci:
I'm in _getMemberDemographicAttrs<br/>
I'm leaving _getMemberDemographicAttrs<br/>
I'm in _getMemberDemographicAttrs<br/>
I'm leaving _getMemberDemographicAttrs<br/>
I'm in _getMemberDemographicAttrs<br/>
Killed
Je n'ai jamais vu ce générique Killed
message d'erreur et je me demande ce qui est à l'origine pour être tué?
Vous devez vous connecter pour publier un commentaire.
Vous pourriez déclencher la Linux de mémoire (OOM) killer. Vérifier
dmesg
pour les messages à ce sujet. Il explique le processus qui a été tué lorsque cela se produit.Moyen Simple de reproduire ce
Killed
erreur:J'ai été en mesure de reproduire cette erreur sur
Ubuntu 12.10
avecPHP 5.3.10
.Créer un script PHP appelé
m.php
et l'enregistrer:De l'exécuter:
Le programme prend 100% du CPU pendant environ 15 secondes, puis s'arrête avec la
Killed
message. Regardezdmesg | grep php
et il y a des indices:Donc dans mon cas, le programme PHP arrêté et imprimés "Tué", car il a manqué de mémoire dû à une boucle infinie.
Solutions:
Dans mon cas, sur CloudLinux, PHP 7.1, il s'est produit lorsque 2 des processus étaient en train de lire et d'écrire dans le même fichier sans verrous.