使用函数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 ">
Maison développement back-end tutoriel php 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>
Copier après la connexion

例子

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>
Copier après la connexion

其他说明

基本概念

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

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

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

创建流程

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

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

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

  4. 重设文件权限掩码

  5. 关闭文件描述符

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

信号处理

//TODO

参考资料

PHP实现守护进程

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

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Causes et solutions aux exceptions ConcurrentModificationException en Java Causes et solutions aux exceptions ConcurrentModificationException en Java Jun 25, 2023 am 10:33 AM

En Java, lorsque plusieurs threads exploitent un objet de collection en même temps, une exception ConcurrentModificationException peut se produire. Cette exception se produit généralement lors de la traversée de la collection lors de la modification ou de la suppression d'éléments. Cela entraînera une incohérence de l'état de la collection, ce qui générera des anomalies. . Cet article examinera les causes et les solutions à cette exception. 1. Causes de l'exception Normalement, exception ConcurrentModificationException

Comment utiliser l'extension POSIX de PHP ? Comment utiliser l'extension POSIX de PHP ? Jun 03, 2023 am 08:01 AM

Les extensions POSIX pour PHP sont un ensemble de fonctions et de constantes qui permettent à PHP d'interagir avec les systèmes d'exploitation compatibles POSIX. POSIX (PortableOperatingSystemInterface) est un ensemble de normes d'interface de système d'exploitation conçues pour permettre aux développeurs de logiciels d'écrire des applications pouvant s'exécuter sur divers systèmes d'exploitation UNIX ou de type UNIX. Cet article explique comment utiliser les extensions POSIX pour PHP, y compris l'installation et l'utilisation. 1. Installez l'extension POSIX de PHP dans

Comment afficher le pid dans le Gestionnaire des tâches Win7 ? L'éditeur vous apprendra comment l'afficher. Comment afficher le pid dans le Gestionnaire des tâches Win7 ? L'éditeur vous apprendra comment l'afficher. Jan 11, 2024 pm 07:00 PM

De nombreux amis ne connaissent peut-être pas l'identifiant pid et vous pouvez le vérifier dans le gestionnaire de tâches. Cependant, certains utilisateurs ne peuvent pas trouver l'identifiant PID lorsqu'ils ouvrent le Gestionnaire des tâches. En fait, si l'utilisateur souhaite afficher l'identifiant PID du processus, il doit configurer le « Gestionnaire des tâches » pour le voir. prenons le système win7 comme exemple. Comment afficher l'identifiant PID du processus. L'identifiant PID est un numéro séquentiel unique attribué automatiquement par le système d'exploitation Windows aux programmes en cours d'exécution. Une fois le processus terminé, le PID est recyclé par le système et peut continuer à être attribué aux programmes nouvellement en cours d'exécution lorsque les utilisateurs ont besoin de visualiser le processus. , ils utiliseront le gestionnaire de tâches pour vérifier, alors comment vérifier l'identifiant PID du processus ? Laissez-moi le partager avec vous ci-dessous

L'alternative Linux et BSD Redox OS atteint la version 0.9.0 avec les applications de bureau COSMIC et de multiples optimisations L'alternative Linux et BSD Redox OS atteint la version 0.9.0 avec les applications de bureau COSMIC et de multiples optimisations Sep 12, 2024 pm 12:18 PM

Le 20 avril 2015, Redox OS est apparu comme un nouveau système d'exploitation à micro-noyau « axé sur la sécurité, la liberté, la fiabilité, l'exactitude et le pragmatisme ». Écrit en Rust et en langage assembleur, ce projet s'est inspiré de morceaux de code tels que

Erreurs courantes et solutions en cas d'échec du fork dans PHP PCNTL Erreurs courantes et solutions en cas d'échec du fork dans PHP PCNTL Feb 28, 2024 am 11:06 AM

Erreurs courantes et solutions en cas d'échec de fork dans PHPPCNTL Lorsque vous utilisez l'extension PHPPCNTL pour la gestion des processus, vous rencontrez souvent le problème de l'échec de fork. Fork est une méthode de création d'un processus enfant. Dans certains cas, l'opération fork peut échouer en raison de certaines erreurs. Cet article présentera quelques erreurs courantes de défaillance de fork et les solutions correspondantes, et fournira des exemples de code spécifiques pour aider les lecteurs à mieux comprendre et gérer ces problèmes. 1. Message d'erreur possible en cas de mémoire insuffisante : Can

Comment gérer UnsupportedEncodingException en Java ? Comment gérer UnsupportedEncodingException en Java ? Jun 25, 2023 am 08:02 AM

Comment gérer UnsupportedEncodingException en Java ? En programmation Java, vous pouvez rencontrer UnsupportedEncodingException. Cette exception est généralement provoquée par une conversion de codage incorrecte ou par un codage non pris en charge. Dans cet article, nous présenterons les causes de l’exception UnsupportedEncodingException et comment y remédier. Qu'est-ce qui n'est pas pris en charge ?

Solution à l'erreur fatale PHP : exception non interceptée 'PDOException' Solution à l'erreur fatale PHP : exception non interceptée 'PDOException' Jun 23, 2023 pm 12:09 PM

Dans le développement PHP, vous pouvez rencontrer des erreurs telles que "PHPFatalerror:Uncaughtexception'PDOException'". Il s'agit d'une exception provoquée par une erreur lorsque PHP exploite la base de données. Si cette erreur n'est pas traitée à temps, elle entraînera une interruption du programme ou des erreurs inattendues. Alors comment résoudre ce problème ? Voici quelques solutions courantes. 1. Vérifiez les paramètres de la base de données. Tout d'abord, nous devons vérifier les paramètres transmis lors de la connexion à la base de données.

Analyse des raisons pour lesquelles la fonction fork étendue de PHP PCNTL a échoué Analyse des raisons pour lesquelles la fonction fork étendue de PHP PCNTL a échoué Feb 28, 2024 pm 09:42 PM

Analyse des raisons pour lesquelles la fonction fork de l'extension PHPPCNTL échoue. En PHP, l'extension PCNTL fournit une série de fonctions pour gérer le contrôle des processus, parmi lesquelles la fonction fork est l'une des fonctions couramment utilisées. Grâce à la fonction fork, nous pouvons créer un processus enfant pour effectuer une certaine tâche, ce qui est très utile lors de l'écriture de gestionnaires concurrents. Cependant, lors de l'utilisation de la fonction de fork étendu PCNTL, le fork échoue parfois. Cet article analysera les raisons de cette situation et donnera des codes spécifiques.

See all articles