Heim > Backend-Entwicklung > PHP-Tutorial > Prinzipien und Methoden des PHP-Skript-Daemon-Prozesses

Prinzipien und Methoden des PHP-Skript-Daemon-Prozesses

墨辰丷
Freigeben: 2023-03-26 20:06:02
Original
1212 Leute haben es durchsucht

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 = &#39;1111111&#39; . "\n";
  error_log($message);
  sleep(5);
}
Nach dem Login kopieren

#/tmp/lock/test1.lock 为当前进程要锁定的文件,不同的进程配置不同的锁文件,该文件会自动创建
* * * * * flock -xn /tmp/lock/test1.lock -c &#39;nohup php index.php >> /php/test.log 2>&1 &&#39;
* * * * * flock -xn /tmp/mytest.lock -c &#39;php /home/fdipzone/php/test.php >> /home/fdipzone/php/test.log&#39;
Nach dem Login kopieren

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(&#39;内存溢出&#39;);//大于100M内存退出程序,防止内存泄漏被系统杀死导致任务终端
}
Nach dem Login kopieren

Hinweis:

Methode zum Anzeigen und Schließen von Nohup-Aufgaben:

Schließen:

//方法一:
ps -e | grep commend
kill -9 pid
//方法二:
fg %n  //n为jobs命令查看的进程号
Nach dem Login kopieren

Anzeigen:

//查看后台进程
jobs
Nach dem Login kopieren

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
Nach dem Login kopieren

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.

Verwandte Empfehlungen:

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage