使用函数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 ">
Rumah pembangunan bahagian belakang tutorial 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>
Salin selepas log masuk

例子

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>
Salin selepas log masuk

其他说明

基本概念

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

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

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

创建流程

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

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

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

  4. 重设文件权限掩码

  5. 关闭文件描述符

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

信号处理

//TODO

参考资料

PHP实现守护进程

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

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Punca dan penyelesaian kepada pengecualian ConcurrentModificationException dalam Java Punca dan penyelesaian kepada pengecualian ConcurrentModificationException dalam Java Jun 25, 2023 am 10:33 AM

Di Java, apabila berbilang benang mengendalikan objek koleksi pada masa yang sama, pengecualian ConcurrentModificationException mungkin berlaku apabila melintasi koleksi apabila mengubah suai atau memadamkan elemen Ini akan menyebabkan keadaan koleksi menjadi tidak konsisten . Artikel ini akan menyelidiki punca dan penyelesaian kepada pengecualian ini. 1. Punca Pengecualian Biasanya, Pengecualian ConcurrentModificationException

Bagaimana untuk menggunakan sambungan POSIX PHP? Bagaimana untuk menggunakan sambungan POSIX PHP? Jun 03, 2023 am 08:01 AM

Sambungan POSIX untuk PHP ialah satu set fungsi dan pemalar yang membolehkan PHP berinteraksi dengan sistem pengendalian yang mematuhi POSIX. POSIX (PortableOperatingSystemInterface) ialah satu set piawaian antara muka sistem pengendalian yang direka untuk membolehkan pembangun perisian menulis aplikasi yang boleh dijalankan pada pelbagai sistem pengendalian seperti UNIX atau UNIX. Artikel ini akan memperkenalkan cara menggunakan sambungan POSIX untuk PHP, termasuk pemasangan dan penggunaan. 1. Pasang sambungan POSIX PHP dalam

Bagaimana untuk memaparkan pid dalam Pengurus Tugas Win7 Editor akan mengajar anda bagaimana untuk memaparkannya. Bagaimana untuk memaparkan pid dalam Pengurus Tugas Win7 Editor akan mengajar anda bagaimana untuk memaparkannya. Jan 11, 2024 pm 07:00 PM

Ramai rakan mungkin tidak biasa dengan pengecam pid, dan anda boleh menyemaknya dalam pengurus tugas. Walau bagaimanapun, sesetengah pengguna tidak dapat mencari pengecam PID apabila mereka membuka Pengurus Tugas Sebenarnya, jika pengguna ingin melihat pengecam PID proses, dia perlu menyediakan "Pengurus Tugas" untuk melihatnya ambil sistem win7 sebagai contoh Bagaimana untuk melihat pengecam PID proses. Pengecam PID ialah nombor jujukan unik yang diberikan secara automatik oleh sistem pengendalian Windows untuk menjalankan program Selepas proses ditamatkan, PID dikitar semula oleh sistem dan mungkin terus diberikan kepada program yang baru dijalankan Apabila pengguna perlu melihat proses tersebut , mereka akan menggunakan Pengurus tugas untuk menyemak, jadi bagaimana untuk menyemak pengecam PID proses? Izinkan saya berkongsi dengan anda di bawah

Linux dan BSD alternatif Redox OS mencapai versi 0.9.0 dengan aplikasi desktop COSMIC dan berbilang pengoptimuman Linux dan BSD alternatif Redox OS mencapai versi 0.9.0 dengan aplikasi desktop COSMIC dan berbilang pengoptimuman Sep 12, 2024 pm 12:18 PM

Pada 20 April 2015, Redox OS muncul sebagai sistem pengendalian mikrokernel baharu "dengan tumpuan pada keselamatan, kebebasan, kebolehpercayaan, ketepatan dan pragmatisme." Ditulis dalam bahasa Rust dan himpunan, projek ini diilhamkan oleh kepingan kod sedemikian

Ralat dan penyelesaian biasa untuk kegagalan garpu dalam PHP PCNTL Ralat dan penyelesaian biasa untuk kegagalan garpu dalam PHP PCNTL Feb 28, 2024 am 11:06 AM

Ralat dan penyelesaian biasa untuk kegagalan garpu dalam PHPPCNTL Apabila menggunakan sambungan PHPPCNTL untuk pengurusan proses, anda sering menghadapi masalah kegagalan garpu. Fork ialah kaedah mencipta proses anak Dalam sesetengah kes, operasi garpu mungkin gagal disebabkan oleh beberapa ralat. Artikel ini akan memperkenalkan beberapa ralat kegagalan garpu biasa dan penyelesaian yang sepadan, dan memberikan contoh kod khusus untuk membantu pembaca memahami dan menangani masalah ini dengan lebih baik. 1. Mesej ralat yang mungkin untuk ingatan tidak mencukupi: Boleh

Penyelesaian kepada ralat Fatal PHP: Pengecualian tidak ditangkap 'PDOException' Penyelesaian kepada ralat Fatal PHP: Pengecualian tidak ditangkap 'PDOException' Jun 23, 2023 pm 12:09 PM

Dalam pembangunan PHP, anda mungkin menghadapi ralat seperti "PHPFatalerror:Uncaughtexception'PDOException'". Ini adalah pengecualian yang disebabkan oleh ralat semasa PHP mengendalikan pangkalan data. Jika ralat ini tidak dikendalikan dalam masa, ia akan menyebabkan gangguan program atau ralat yang tidak dijangka. Jadi bagaimana untuk menyelesaikan masalah ini? Berikut ialah beberapa penyelesaian biasa. 1. Semak parameter pangkalan data Pertama, kita perlu menyemak parameter yang diluluskan semasa menyambung ke pangkalan data.

Bagaimana untuk menangani UnsupportedEncodingException di Java? Bagaimana untuk menangani UnsupportedEncodingException di Java? Jun 25, 2023 am 08:02 AM

Bagaimana untuk menangani UnsupportedEncodingException di Java? Dalam pengaturcaraan Java, anda mungkin menghadapi UnsupportedEncodingException. Pengecualian ini biasanya disebabkan oleh penukaran pengekodan yang salah atau pengekodan yang tidak disokong. Dalam artikel ini, kami akan memperkenalkan punca pengecualian UnsupportedEncodingException dan cara menanganinya. Apa itu Tidak DisokongE

Analisis sebab mengapa fungsi fork lanjutan PHP PCNTL gagal Analisis sebab mengapa fungsi fork lanjutan PHP PCNTL gagal Feb 28, 2024 pm 09:42 PM

Analisis sebab fungsi fork sambungan PHPPCNTL gagal Dalam PHP, sambungan PCNTL menyediakan satu siri fungsi untuk mengendalikan kawalan proses, antaranya fungsi fork adalah salah satu fungsi yang biasa digunakan. Melalui fungsi garpu, kita boleh mencipta proses kanak-kanak untuk melaksanakan tugas tertentu, yang sangat berguna apabila menulis pengendali serentak. Walau bagaimanapun, apabila menggunakan fungsi garpu lanjutan PCNTL, kadangkala garpu gagal Artikel ini akan menganalisis sebab untuk situasi ini dan memberikan kod tertentu.

See all articles