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