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教程有兴趣的朋友有所帮助。

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



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

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

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

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

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? 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 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.
