Ich habe ein PHP-Skript, das eingehende Socket-Anfragen usw. abhört. Ich brauche dieses Skript, das ständig auf dem Server läuft (es läuft in einer Endlosschleife).
Wie kann ich diesen Prozess initiieren und verwalten? Ich habe versucht, es einfach durch SSH / Putty zu starten, aber sobald die SSH-Verbindung ausläuft, stirbt das Skript.
Dadurch wird das Skript im Hintergrund ausgeführt
Sie können es mit
überprüfen %Vor% Wie Patrick in den Kommentaren unten erwähnt hat, gibt es keine maximale Ausführungszeit für PHP-Skripte, die über die Befehlszeile ausgeführt werden. myscript.php
wird unbegrenzt ausgeführt.
Führen Sie das Skript im Hintergrund über SSH aus, wie hier erklärt: ssh wird aufgefordert, einen Befehl im Hintergrund auf dem Zielcomputer auszuführen
Ich würde dann vorschlagen, dass Sie eine Möglichkeit haben, zu überwachen, ob das Skript noch läuft. Du hast erwähnt, dass dein Skript auf einem Port horcht, du könntest vielleicht ein Skript schreiben, das hin und wieder überprüft, ob der Port noch offen ist.
Eine weitere Option ist die Überwachung der Prozess-ID. Wenn das Skript zum ersten Mal ausgeführt wird, können Sie die Prozess-ID mit getmypid
function abrufen und in einer Datei speichern. Sie können dann regelmäßig überprüfen, ob es noch läuft ps -p 1234
verwenden.
Eine andere Lösung: Wie überprüft man, ob ein php Skript läuft noch
Sie können den Browser verwenden, wenn Sie ignore_user_abort () und set_time_limit ()
Wir hatten kürzlich ein ähnliches Bedürfnis. Wir betreiben einen Ubuntu 14.04 LTS-Server, haben also einen upstart
-Prozess erstellt, um den Prozess beim Booten zu starten, und starten ihn neu, wenn er aus irgendeinem Grund beendet wird.
Es hat für uns sehr gut funktioniert, einschließlich des automatischen Neustarts; Unser langwieriger Prozess verliert schließlich die MySQL-Verbindung. Das Skript verarbeitet die Ausnahme und beendet sie, bevor der Prozess upstart
den Prozess automatisch neu startet. Wir haben auch ein Skript cron
hinzugefügt, um den Prozess zu überwachen, nur für den Fall, dass es einen größeren Fehler gibt, dass upstart
den Neustart verweigert; Wir haben eine Ausfallsicherung für den Fall, dass ein einfacher Neustart den vorherigen Fehler nicht korrigiert.
Sie können die Befehlszeile ausführen. Sie müssen einen Modifizierer "Im Hintergrund ausführen" hinzufügen, damit das System nicht auf das Skript warten muss. Grundsätzlich setzen Sie ein & amp; am Ende der Befehlszeile.
Eine Sache, die Sie auf jeden Fall tun sollten, ist ein Ini-Shell-Skript zu erstellen, das das PHP-Skript beim Booten bei jedem Neustart ausführt.