workerman笔记-php创建守护进程
data-id="1190000005056078" data-license="sa">
使用函数
<code>pcntl_fork();//创建子进程 posix_setsid();//设置当前进程为进程组长 posix_getpid();//获取进程id</code>
例子
workerman中将进程
<code>/** * Run as deamon mode. * * @throws Exception */ protected static function daemonize() { if (!self::$daemonize) { return; } /** * 重设文件权限掩码 * 子进程从父进程继承了文件权限 * 若子进程不涉及到文件创建,可取消 */ umask(0); $pid = pcntl_fork();//创建子进程 if (-1 === $pid) { throw new Exception('fork fail'); } elseif ($pid > 0) { exit(0); //父进程退出 } /** * 更改子进程为进程组长 * 使子进程摆脱父进程控制 */ if (-1 === posix_setsid()) { throw new Exception("setsid fail"); } // Fork again avoid SVR4 system regain the control of terminal. $pid = pcntl_fork(); if (-1 === $pid) { throw new Exception("fork fail"); } elseif (0 !== $pid) { exit(0); } }</code>
其他说明
基本概念
守护进程:Linux中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程常常在系统引导装入时启动,在系统关闭时终止。
进程组:是一个或多个进程的集合。进程组有进程组ID来唯一标识。除了进程号(PID)之外,进程组ID也是一个进程的必备属性。每个进程组都有一个组长进程,其组长进程的进程号等于进程组ID。且该进程组ID不会因组长进程的退出而受到影响。
会话周期:会话期是一个或多个进程组的集合。通常,一个会话开始于用户登录,终止于用户退出,在此期间该用户运行的所有进程都属于这个会话期。
创建流程
fork子进程,父进程退出
更改子进程为组长进程
改变当前目录为根目录(chdir())
重设文件权限掩码
关闭文件描述符
守护进程退出,处理SIGCHLD信号
信号处理
//TODO
参考资料
PHP实现守护进程
以上就介绍了workerman笔记-php创建守护进程,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Wenn in Java mehrere Threads gleichzeitig ein Sammlungsobjekt betreiben, kann es zu einer ConcurrentModificationException-Ausnahme kommen. Diese Ausnahme tritt normalerweise auf, wenn die Sammlung beim Ändern oder Löschen von Elementen durchlaufen wird . In diesem Artikel werden die Ursachen und Lösungen für diese Ausnahme erläutert. 1. Ausnahmeursachen Normalerweise eine ConcurrentModificationException-Ausnahme

POSIX-Erweiterungen für PHP sind eine Reihe von Funktionen und Konstanten, die es PHP ermöglichen, mit POSIX-kompatiblen Betriebssystemen zu interagieren. POSIX (PortableOperatingSystemInterface) ist eine Reihe von Betriebssystemschnittstellenstandards, die es Softwareentwicklern ermöglichen sollen, Anwendungen zu schreiben, die auf verschiedenen UNIX- oder UNIX-ähnlichen Betriebssystemen ausgeführt werden können. In diesem Artikel wird die Verwendung von POSIX-Erweiterungen für PHP, einschließlich Installation und Verwendung, vorgestellt. 1. Installieren Sie die POSIX-Erweiterung von PHP in

Vielen Freunden ist die PID-ID möglicherweise nicht bekannt. Sie können sie im Task-Manager überprüfen. Einige Benutzer können die PID-ID jedoch nicht finden, wenn sie den Task-Manager öffnen. Wenn der Benutzer die Prozess-PID-ID anzeigen möchte, muss er den „Task-Manager“ einrichten, um ihn anzuzeigen Nehmen Sie das Win7-System als Beispiel. So zeigen Sie die Prozess-PID-ID an. Die PID-Kennung ist eine eindeutige fortlaufende Nummer, die vom Windows-Betriebssystem automatisch den laufenden Programmen zugewiesen wird. Nach Beendigung des Prozesses wird die PID vom System wiederverwendet und möglicherweise weiterhin neu laufenden Programmen zugewiesen Sie verwenden den Task-Manager zur Überprüfung. Wie überprüft man also die Prozess-PID-Kennung? Lassen Sie mich es unten mit Ihnen teilen

Am 20. April 2015 erschien Redox OS als neues Mikrokernel-Betriebssystem „mit einem Fokus auf Sicherheit, Freiheit, Zuverlässigkeit, Korrektheit und Pragmatismus“. Dieses in Rust und Assembler geschriebene Projekt wurde von Codeteilen wie z

Häufige Fehler und Lösungen für Fork-Fehler in PHPPCNTL Wenn Sie die PHPPCNTL-Erweiterung für die Prozessverwaltung verwenden, stoßen Sie häufig auf das Problem eines Fork-Fehlers. Fork ist eine Methode zum Erstellen eines untergeordneten Prozesses. In einigen Fällen kann der Fork-Vorgang aufgrund einiger Fehler fehlschlagen. In diesem Artikel werden einige häufige Fork-Fehler und entsprechende Lösungen vorgestellt und spezifische Codebeispiele bereitgestellt, um den Lesern zu helfen, diese Probleme besser zu verstehen und damit umzugehen. 1. Mögliche Fehlermeldung bei unzureichendem Speicher: Kann

Wie gehe ich mit UnsupportedEncodingException in Java um? Bei der Java-Programmierung kann es zu UnsupportedEncodingException kommen. Diese Ausnahme wird normalerweise durch eine falsche Kodierungskonvertierung oder eine nicht unterstützte Kodierung verursacht. In diesem Artikel stellen wir die Ursachen der UnsupportedEncodingException-Ausnahme und den Umgang damit vor. Was ist nicht unterstütztE

Bei der PHP-Entwicklung können Fehler wie „PHPFatalerror:UncaughtException'PDOException‘“ auftreten. Dies ist eine Ausnahme, die durch einen Fehler beim Betrieb der Datenbank durch PHP verursacht wird. Wenn dieser Fehler nicht rechtzeitig behoben wird, führt dies zu Programmunterbrechungen oder unerwarteten Fehlern. Wie kann man dieses Problem lösen? Hier sind einige gängige Lösungen. 1. Überprüfen Sie die Datenbankparameter. Zuerst müssen wir die Parameter überprüfen, die beim Herstellen einer Verbindung zur Datenbank übergeben werden.

Analyse der Gründe, warum die Fork-Funktion der PHPPCNTL-Erweiterung fehlschlägt. In PHP bietet die PCNTL-Erweiterung eine Reihe von Funktionen zur Handhabung der Prozesssteuerung, darunter die Fork-Funktion, eine der am häufigsten verwendeten Funktionen. Mit der Fork-Funktion können wir einen untergeordneten Prozess erstellen, der eine bestimmte Aufgabe ausführt, was beim Schreiben gleichzeitiger Handler sehr nützlich ist. Bei Verwendung der erweiterten PCNTL-Fork-Funktion schlägt der Fork jedoch manchmal fehl. In diesem Artikel werden die Gründe für diese Situation analysiert und spezifische Codes angegeben.
