摘要:守護進程常常在系統(tǒng)引導裝入時啟動,在系統(tǒng)關閉時終止。進程組有進程組來唯一標識。且該進程組不會因組長進程的退出而受到影響。
使用函數(shù)
pcntl_fork();//創(chuàng)建子進程 posix_setsid();//設置當前進程為進程組長 posix_getpid();//獲取進程id例子
workerman中將進程
/** * Run as deamon mode. * * @throws Exception */ protected static function daemonize() { if (!self::$daemonize) { return; } /** * 重設文件權限掩碼 * 子進程從父進程繼承了文件權限 * 若子進程不涉及到文件創(chuàng)建,可取消 */ umask(0); $pid = pcntl_fork();//創(chuàng)建子進程 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); } }其他說明 基本概念
守護進程:Linux中的后臺服務進程。它是一個生存期較長的進程,通常獨立于控制終端并且周期性地執(zhí)行某種任務或等待處理某些發(fā)生的事件。守護進程常常在系統(tǒng)引導裝入時啟動,在系統(tǒng)關閉時終止。
進程組:是一個或多個進程的集合。進程組有進程組ID來唯一標識。除了進程號(PID)之外,進程組ID也是一個進程的必備屬性。每個進程組都有一個組長進程,其組長進程的進程號等于進程組ID。且該進程組ID不會因組長進程的退出而受到影響。
會話周期:會話期是一個或多個進程組的集合。通常,一個會話開始于用戶登錄,終止于用戶退出,在此期間該用戶運行的所有進程都屬于這個會話期。
創(chuàng)建流程fork子進程,父進程退出
更改子進程為組長進程
改變當前目錄為根目錄(chdir())
重設文件權限掩碼
關閉文件描述符
守護進程退出,處理SIGCHLD信號
信號處理//TODO
參考資料PHP實現(xiàn)守護進程
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://m.hztianpu.com/yun/21550.html
摘要:本節(jié)主要講解常用函數(shù)和進程池的概念,也會涉及到守護進程的知識。所以任何時候,建議預先創(chuàng)建好進程,也就是使用進程池的方式實現(xiàn)。 本節(jié)主要講解Posix常用函數(shù)和進程池的概念,也會涉及到守護進程的知識。本節(jié)難度較低。 Posix常用函數(shù) posix_kill 向指定pid進程發(fā)送信號。成功時返回 TRUE , 或者在失敗時返回 FALSE 。 bool posix_kill ( int $...
摘要:后面每開啟一個子進程,會將子進程的存儲到中,用來后面主進程監(jiān)控子進程,如果子進程意外終止,主進程可以重新佛。將當前子進程設置為會話組再次創(chuàng)建子進程,為了防止在的系統(tǒng)下重新打開控制終端。 wokerman 啟動分析 @(學習)[workerman, php] 前期想說的 也是最近才看的代碼,遇到不懂得地方就去google,所以這篇文章里面穿插了很多參考資料,可以直接點擊閱覽。 需要了解一...
摘要:如果服務器中該賬號的鑰匙對已經存在,并且已經將放到該賬號的設置中,可以跳過這一步。如果不符合,需要根據(jù)提示安裝必要的擴展。后續(xù)再進行補充做守護隊列監(jiān)聽進程和自動部署到服務器的說明。 系統(tǒng)LAMP基礎環(huán)境是已經搭建好,記錄要將web項目部署到線上的過程如下,方便后續(xù)部署新項目時參考: laravel項目ubuntu 16.04php 7.0 克隆項目到服務器 (1)我們使用 your@e...
摘要:如果服務器中該賬號的鑰匙對已經存在,并且已經將放到該賬號的設置中,可以跳過這一步。如果不符合,需要根據(jù)提示安裝必要的擴展。后續(xù)再進行補充做守護隊列監(jiān)聽進程和自動部署到服務器的說明。 系統(tǒng)LAMP基礎環(huán)境是已經搭建好,記錄要將web項目部署到線上的過程如下,方便后續(xù)部署新項目時參考: laravel項目ubuntu 16.04php 7.0 克隆項目到服務器 (1)我們使用 your@e...
閱讀 2508·2021-11-23 09:51
閱讀 2077·2021-10-14 09:43
閱讀 2867·2021-09-27 13:35
閱讀 1242·2021-09-22 15:54
閱讀 2695·2021-09-13 10:36
閱讀 4034·2019-08-30 15:56
閱讀 3504·2019-08-30 14:09
閱讀 1818·2019-08-30 12:57