Dieser Artikel stellt hauptsächlich das Prinzip und die Implementierungsmethode des PHP-Skript-Daemons vor. Er analysiert die Implementierungsideen, Prinzipien, Formate und spezifischen Implementierungsmethoden des PHP-Skript-Daemons ausführlicher.
Ideen:
1. While-Schleife: Wenn keine Daten vorhanden sind, können Sie schlafen.
2 Überprüfen Sie zunächst, ob es bereits ausgeführt wird. Wenn nicht, überspringen Sie es.
3. Nohup-Hintergrundausführung
4. flock -xn lock
Beispiel:
Auszuführender Code: index. php
<?php set_time_limit(0); //死循环 while(1) { $message = '1111111' . "\n"; error_log($message); sleep(5); }
#/tmp/lock/test1.lock 为当前进程要锁定的文件,不同的进程配置不同的锁文件,该文件会自动创建 * * * * * flock -xn /tmp/lock/test1.lock -c 'nohup php index.php >> /php/test.log 2>&1 &' * * * * * flock -xn /tmp/mytest.lock -c 'php /home/fdipzone/php/test.php >> /home/fdipzone/php/test.log'
schreibt das PHP-Skript. Um einen Speicherüberlauf des Daemon-Prozesses zu verhindern, wird empfohlen, die Speichernutzung regelmäßig zu überprüfen.
Fügen Sie den folgenden Code in das Geschäftsskript ein:
if(memory_get_usage()>100*1024*1024){ exit('内存溢出');//大于100M内存退出程序,防止内存泄漏被系统杀死导致任务终端 }
Hinweis:
Methode zum Anzeigen und Schließen von Nohup-Aufgaben:
Schließen:
//方法一: ps -e | grep commend kill -9 pid //方法二: fg %n //n为jobs命令查看的进程号
Anzeigen:
//查看后台进程 jobs
Prinzip:
Linux-Flock-Dateisperre verwenden, um Aufgabensperre zu implementieren und Konflikte zu lösen
Format:
flock [-sxun][-w #] fd# flock [-sxon][-w #] file [-c] command
Optionen
-s, --shared: Erhalten Sie eine Freigabe lock
-x, --exclusive: Erhalten Sie eine exklusive Sperre
-u, --unlock: Entfernen Sie eine Sperre, die normalerweise unnötig ist. Die Sperre wird automatisch verworfen, nachdem das Skript ausgeführt wurde
-n , --nonblock: Wenn die Sperre nicht sofort erhalten wird, schlagen Sie direkt fehl, anstatt zu warten
-w, --timeout: Wenn die Sperre nicht sofort erhalten wird, warten Sie auf die angegebene Zeit
-o, --close : Beschreibung zum Schließen der Datei vor der Ausführung des Befehlssymbols. Wird verwendet, um die Sperre zu steuern, wenn der Befehl einen untergeordneten Prozess erzeugt
-c, --command: Führen Sie einen separaten Befehl in der Shell aus
-h, --help Hilfe anzeigen
-V, - -version: Version anzeigen
Führen Sie eine PHP-Datei aus. Wenn sie gesperrt ist, schlägt sie ohne Wartezeit fehl. Die Parameter sind -xn
* * * * * flock -xn /tmp/mytest.lock -c 'php /home/fdipzone/php/test.php >> /home/fdipzone / php/test.log'
Wenn die Aufgabe nicht abgeschlossen ist und die nächste Aufgabe feststellt, dass /tmp/mytest.lock gesperrt ist, wird die aktuelle Aufgabe beendet und beurteilt wird im nächsten Zyklus erneut durchgeführt.
PHP-Implementierungsmethode für Skriptasynchrone Ausführung
php-fpm-DienststartSkriptDetaillierte Schritte
phpSkriptProduktliste regelmäßig aktualisieren
Das obige ist der detaillierte Inhalt vonPrinzipien und Methoden des PHP-Skript-Daemon-Prozesses. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!