Wie lässt sich ein persistentes PHP-Skript ausführen?

8

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.

    
Andy Hin 17.01.2011, 19:47
quelle

6 Antworten

6
%Vor%

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.

    
ActionOwl 17.01.2011, 19:54
quelle
2

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

    
Christian Joudrey 17.01.2011 19:49
quelle
2

Sie können den Browser verwenden, wenn Sie ignore_user_abort () und set_time_limit ()

    
AntonioCS 17.01.2011 20:32
quelle
1

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.

    
KDrewiske 06.04.2017 16:14
quelle
0

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.

    
dqhendricks 17.01.2011 19:52
quelle
-1

Warum nicht eine while-Schleife? do { /* your code */ } while $something == 0;

Wenn etwas passiert, das den Stopp des Skripts auslöst, setzen Sie $ sache auf einen anderen Wert als 0.

    
cwade12c 17.01.2011 19:50
quelle

Tags und Links