Heim  >  Artikel  >  Backend-Entwicklung  >  Methodenanalyse zum Implementierungsprinzip des Skript-Daemons in PHP

Methodenanalyse zum Implementierungsprinzip des Skript-Daemons in PHP

黄舟
黄舟Original
2017-07-20 13:45:091244Durchsuche

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.

Die Beispiele in diesem Artikel beschreiben die Prinzipien und Implementierungsmethoden des PHP-Skript-Daemons. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

Idee:

1 While-Schleife, wenn derzeit keine vorhanden ist Daten, die ausgeführt werden sollen, können Sie in den Ruhezustand versetzen.
2. Das crontab-Skript führt das Skript in jedem festgelegten Zeitraum aus. Es prüft zunächst, ob es bereits ausgeführt wird.
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);
}


#/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;

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内存退出程序,防止内存泄漏被系统杀死导致任务终端
}

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:

Verwenden Sie die Linux-Flock-Dateisperre, um die Aufgabensperre zu implementieren und Konflikte zu lösen

Format:


flock [-sxun][-w #] fd#
flock [-sxon][-w #] file [-c] command

Optionen

-s, --shared: Eine gemeinsame Sperre erhalten
- x, --exclusive: Erhalten Sie eine exklusive Sperre
-u, --unlock: Entfernen Sie eine Sperre, die normalerweise nicht benötigt wird. Die Sperre wird automatisch verworfen, nachdem das Skript ausgeführt wurde
-n, -- nonblock: Wenn nicht, erhalten Sie die Sperre sofort, schlagen Sie direkt fehl, anstatt zu warten
-w, --timeout: Wenn die Sperre nicht sofort erhalten wird, warten Sie auf die angegebene Zeit
-o, --close: Schließen Sie die Datei Deskriptor, bevor Sie den Befehl ausführen. 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 fehl, ohne zu warten. 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.

Das obige ist der detaillierte Inhalt vonMethodenanalyse zum Implementierungsprinzip des Skript-Daemons in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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