国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

workerman筆記-php創建守護進程

Cristic / 735人閱讀

摘要:守護進程常常在系統引導裝入時啟動,在系統關閉時終止。進程組有進程組來唯一標識。且該進程組不會因組長進程的退出而受到影響。

使用函數
pcntl_fork();//創建子進程
posix_setsid();//設置當前進程為進程組長

posix_getpid();//獲取進程id
例子

workerman中將進程

/**
 * 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);
    }
}
其他說明 基本概念

守護進程:Linux中的后臺服務進程。它是一個生存期較長的進程,通常獨立于控制終端并且周期性地執行某種任務或等待處理某些發生的事件。守護進程常常在系統引導裝入時啟動,在系統關閉時終止。

進程組:是一個或多個進程的集合。進程組有進程組ID來唯一標識。除了進程號(PID)之外,進程組ID也是一個進程的必備屬性。每個進程組都有一個組長進程,其組長進程的進程號等于進程組ID。且該進程組ID不會因組長進程的退出而受到影響。

會話周期:會話期是一個或多個進程組的集合。通常,一個會話開始于用戶登錄,終止于用戶退出,在此期間該用戶運行的所有進程都屬于這個會話期。

創建流程

fork子進程,父進程退出

更改子進程為組長進程

改變當前目錄為根目錄(chdir())

重設文件權限掩碼

關閉文件描述符

守護進程退出,處理SIGCHLD信號

信號處理

//TODO

參考資料

PHP實現守護進程

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/21550.html

相關文章

  • PHP進程系列筆記(四)

    摘要:本節主要講解常用函數和進程池的概念,也會涉及到守護進程的知識。所以任何時候,建議預先創建好進程,也就是使用進程池的方式實現。 本節主要講解Posix常用函數和進程池的概念,也會涉及到守護進程的知識。本節難度較低。 Posix常用函數 posix_kill 向指定pid進程發送信號。成功時返回 TRUE , 或者在失敗時返回 FALSE 。 bool posix_kill ( int $...

    Cc_2011 評論0 收藏0
  • workerman 簡要分析

    摘要:后面每開啟一個子進程,會將子進程的存儲到中,用來后面主進程監控子進程,如果子進程意外終止,主進程可以重新佛。將當前子進程設置為會話組再次創建子進程,為了防止在的系統下重新打開控制終端。 wokerman 啟動分析 @(學習)[workerman, php] 前期想說的 也是最近才看的代碼,遇到不懂得地方就去google,所以這篇文章里面穿插了很多參考資料,可以直接點擊閱覽。 需要了解一...

    senntyou 評論0 收藏0
  • 部署web項目的過程記錄,包括laravel,redis,mongodb,workerman的配置過

    摘要:如果服務器中該賬號的鑰匙對已經存在,并且已經將放到該賬號的設置中,可以跳過這一步。如果不符合,需要根據提示安裝必要的擴展。后續再進行補充做守護隊列監聽進程和自動部署到服務器的說明。 系統LAMP基礎環境是已經搭建好,記錄要將web項目部署到線上的過程如下,方便后續部署新項目時參考: laravel項目ubuntu 16.04php 7.0 克隆項目到服務器 (1)我們使用 your@e...

    bluesky 評論0 收藏0
  • 部署web項目的過程記錄,包括laravel,redis,mongodb,workerman的配置過

    摘要:如果服務器中該賬號的鑰匙對已經存在,并且已經將放到該賬號的設置中,可以跳過這一步。如果不符合,需要根據提示安裝必要的擴展。后續再進行補充做守護隊列監聽進程和自動部署到服務器的說明。 系統LAMP基礎環境是已經搭建好,記錄要將web項目部署到線上的過程如下,方便后續部署新項目時參考: laravel項目ubuntu 16.04php 7.0 克隆項目到服務器 (1)我們使用 your@e...

    xuexiangjys 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<