使用函数pcntl_fork();//创建子进程 posix_setsid();//设置当前进程为进程组长posix_getpid();//获取进程id例子workerman中将进程/*** Run as deamon mode.** @throws Exception*/ protected static " /> 使用函数pcntl_fork();//创建子进程 posix_setsid();//设置当前进程为进程组长posix_getpid();//获取进程id例子workerman中将进程/*** Run as deamon mode.** @throws Exception*/ protected static ">
Heim Backend-Entwicklung PHP-Tutorial workerman笔记-php创建守护进程

workerman笔记-php创建守护进程

Jul 29, 2016 am 08:51 AM
exception fork pid posix

data-id="1190000005056078" data-license="sa">

使用函数

<code>pcntl_fork();//创建子进程
posix_setsid();//设置当前进程为进程组长

posix_getpid();//获取进程id</code>
Nach dem Login kopieren

例子

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

其他说明

基本概念

守护进程:Linux中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程常常在系统引导装入时启动,在系统关闭时终止。

进程组:是一个或多个进程的集合。进程组有进程组ID来唯一标识。除了进程号(PID)之外,进程组ID也是一个进程的必备属性。每个进程组都有一个组长进程,其组长进程的进程号等于进程组ID。且该进程组ID不会因组长进程的退出而受到影响。

会话周期:会话期是一个或多个进程组的集合。通常,一个会话开始于用户登录,终止于用户退出,在此期间该用户运行的所有进程都属于这个会话期。

创建流程

  1. fork子进程,父进程退出

  2. 更改子进程为组长进程

  3. 改变当前目录为根目录(chdir())

  4. 重设文件权限掩码

  5. 关闭文件描述符

  6. 守护进程退出,处理SIGCHLD信号

信号处理

//TODO

参考资料

PHP实现守护进程

以上就介绍了workerman笔记-php创建守护进程,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Ursachen und Lösungen für ConcurrentModificationException-Ausnahmen in Java Ursachen und Lösungen für ConcurrentModificationException-Ausnahmen in Java Jun 25, 2023 am 10:33 AM

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

Wie verwende ich die POSIX-Erweiterung von PHP? Wie verwende ich die POSIX-Erweiterung von PHP? Jun 03, 2023 am 08:01 AM

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

Wie zeige ich die PID im Win7-Task-Manager an? Der Editor zeigt Ihnen, wie Sie sie anzeigen. Wie zeige ich die PID im Win7-Task-Manager an? Der Editor zeigt Ihnen, wie Sie sie anzeigen. Jan 11, 2024 pm 07:00 PM

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

Die Linux- und BSD-Alternative Redox OS erreicht Version 0.9.0 mit COSMIC-Desktopanwendungen und mehreren Optimierungen Die Linux- und BSD-Alternative Redox OS erreicht Version 0.9.0 mit COSMIC-Desktopanwendungen und mehreren Optimierungen Sep 12, 2024 pm 12:18 PM

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 PHP PCNTL Häufige Fehler und Lösungen für Fork-Fehler in PHP PCNTL Feb 28, 2024 am 11:06 AM

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? Wie gehe ich mit UnsupportedEncodingException in Java um? Jun 25, 2023 am 08:02 AM

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

Lösung für PHP-Schwerwiegender Fehler: Nicht abgefangene Ausnahme „PDOException' Lösung für PHP-Schwerwiegender Fehler: Nicht abgefangene Ausnahme „PDOException' Jun 23, 2023 pm 12:09 PM

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 erweiterte Fork-Funktion von PHP PCNTL fehlgeschlagen ist Analyse der Gründe, warum die erweiterte Fork-Funktion von PHP PCNTL fehlgeschlagen ist Feb 28, 2024 pm 09:42 PM

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.

See all articles