2013-08-14 6 views
12

Ich verwende gelegentlich forever.js für die schnelle und schmutzige Bereitstellung von CLI-Node.js-Anwendungen in Produktionsumgebungen, in denen ich keine vollständige Implementierung unter supervisord möchte.Gibt es eine forever.js-Entsprechung für PHP, um meine Skripte kontinuierlich auszuführen?

Ich fragte mich, ob es eine Entsprechung für PHP gab? Im Moment haben wir ein Warteschlangenverarbeitungssystem, das Nachrichten von SQS empfängt und sie synchron in eine Datenbank verarbeitet (es kann nicht asynchron ausgeführt werden, da dies in diesem speziellen Anwendungsfall alle Arten von unangenehmen Zeilensperrproblemen verursacht.) Im Moment ist es läuft mit Cron jede Minute, aber es endet oft früh und ich möchte, dass es wieder läuft. Ich kann nicht mehr als einen Prozess gleichzeitig ausführen.

Alle * nix-Befehle/Software/Bash-Typ-Ideen sind willkommen.

+6

Warum nicht forever.js verwenden, um Ihr PHP-Skript zu starten? – quentinadam

+0

doh! Ich habe nicht darüber nachgedacht und werde es versuchen. –

Antwort

26

Gerade forever mit PHP-Skript verwenden (verwenden Sie das -c Argument für immer instruieren php zu verwenden):

$ cat test.php 
<?php 
sleep(3); 
print("foobar\n"); 
exit; 
?> 
$ forever -c php test.php 
foobar 
error: Forever detected script was killed by signal: null 
error: Forever restarting script for 1 time 
foobar 
error: Forever detected script was killed by signal: null 
error: Forever restarting script for 2 time 
... 
+0

Alter, ich hatte keine Ahnung, dass Sie das tun könnten. Das behebt mein Problem. Vielen Dank! –

+2

heilige Scheiße wirklich ?? das ist großartig! – RedactedProfile

+0

Das ist ehrlich gesagt verrückt! Wo soll ich für das Projekt spenden? !! –

2

Ich habe dieses Tool nur entdeckt supervisord und es funktioniert super. Ich habe diese ratchet tutorial verwendet, um es in wenigen Minuten laufen zu lassen!

Wenn ich mich richtig erinnere für immer Skript nicht neu starten, wenn Sie den Server neu starten?

+0

Wir verwenden seit etwa 8 Monaten supervisord und es ist großartig, wir verwenden es tatsächlich in Kombination mit 'foreverd'. Da jedoch fast alle unsere Sachen zum Docker übergehen, haben wir tatsächlich docker eingebaute Dämonisierungswerkzeuge benutzt, zB: '-d --restart = always' –