Generische "Getötet" Fehler im PHP-Skript
Arbeite ich an einem CRON-job ruft ein PHP-Skript, welches eine Menge von Datenbank-arbeiten mit loops.
Führt es richtig, wenn ich die Daten beschränken, die festlegen, aber wenn ich es gegen die vollständige Daten-set, das Skript Fehler mit einer Meldung:
Killed
set_time_limit (0) und memory_limit ist (-1)
Hier ist der code-Abschnitt, wo es ständig stirbt:
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;
}
}
Die Ausgabe sieht wie folgt aus:
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
Ich habe nie gesehen, dieses generischen Killed
Fehlermeldung und ich Frage mich, was die Ursache dafür ist, getötet zu werden?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du vielleicht ausgelöst die Linux out-of-memory (OOM) killer. Überprüfen Sie
dmesg
für die Nachrichten darüber. Es sagt, welcher Prozess getötet wurde, wenn dies geschieht.Einfache Weise zu reproduzieren
Killed
Fehler:War ich in der Lage diesen Fehler zu reproduzieren auf
Ubuntu 12.10
mitPHP 5.3.10
.Erstellen Sie ein PHP-Skript namens
m.php
und speichern:Ausführen:
Nimmt das Programm 100% CPU für etwa 15 Sekunden, dann Stoppt mit der
Killed
Nachricht. Blick aufdmesg | grep php
und es gibt Hinweise:So, in meinem Fall, das PHP-Programm angehalten und gedruckt "Getötet", weil es lief out of memory durch eine unendliche Schleife.
Lösungen:
In meinem Fall auf CloudLinux, PHP 7.1, es trat auf, wenn 2 Prozesse Lesen und schreiben auf die gleiche Datei ohne sperren.