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

資訊專欄INFORMATION COLUMN

守護進程之PHP實現

lily_wang / 3145人閱讀

摘要:什么是守護進程守護進程是一種特殊的進程,它的生命周期很長,它在后臺運行并且沒有控制終端這樣可以保證守護進程不會接收到各種來自終端的信號。比如等,都會使用守護進程的形式運行,確保可以一直正常的提供服務。

什么是守護進程

守護進程(daemon)是一種特殊的進程,它的生命周期很長,它在后臺運行并且沒有控制終端(這樣可以保證守護進程不會接收到各種來自終端的信號)。
比如:crontab、sshd、nginx等,都會使用守護進程的形式運行,確保可以一直正常的提供服務。

如何實現守護進程

fork子進程,父進程退出(當前子進程會成為init進程的子進程)

子進程調用setsid(),開啟一個新會話,成為新的會話組長,并且釋放于終端的關聯關系

再次fork子進程,父進程退出(可以防止會話組長重新申請打開終端)

關閉打開的文件描述符

改變當前工作目錄chdir

清除進程的umask

PHP實現
/**
 * daemon(守護進程) PHP實現
 * @author zhjx922
 */

$pid = pcntl_fork();
if ($pid == -1) {
    die("創建子進程失敗");
} else if ($pid) {
    //第一次退出父進程
    exit(0);
}

//setsid
posix_setsid();

echo "成功輸出,脫離終端" . PHP_EOL;
sleep(5);

$pid = pcntl_fork();
if ($pid == -1) {
    die("創建子進程失敗");
} else if ($pid) {
    //第二次退出父進程(之前fork出來的子進程)
    exit(0);
}

echo "依然可以輸出" . PHP_EOL;
sleep(5);

//關閉各種描述符
@fclose(STDOUT);
@fclose(STDERR);
$STDOUT = fopen("/dev/null", "a");
$STDERR = fopen("/dev/null", "a");

chdir("/");

umask(0);

echo "這里不會輸出, ps aux | grep daemon.php 查看進程,20s后退出" . PHP_EOL;
sleep(20);
日常使用已經注意事項

php daemon.php & 這樣使用,當關閉終端后,當前php進程也會同時關掉

nohup php daemon.php > daemon.log & 終端關閉后,依然會繼續運行

使用supervisor

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

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

相關文章

  • PHP玩轉進程二 — 多進程PHPServer

    摘要:代碼實現啟動啟動流程見流程,主要包括守護進程保存注冊信號處理器創建多進程這部分。模擬調度實際用實現捕獲信號其中,會在每次調度過程中,捕獲信號并執行注冊的信號處理器。 首發于 樊浩柏科學院 經過 用 PHP 玩轉進程之一 — 基礎 的回顧復習,我們已經掌握了進程的基礎知識,現在可以嘗試用 PHP 做一些簡單的進程控制和管理,來加深我們對進程的理解。接下來,我將用多進程模型實現一個簡單的...

    stormjun 評論0 收藏0
  • 使用 Docker 搭建開發環境

    摘要:做了一次分享,主題使用搭建開發環境,簡單介紹了一下的概念,演示了使用構建全套環境。應場景通常于如下場景應的動化打包和發布動化測試和持續集成發布在服務型環境中部署和調整數據庫或其他的后臺應從頭編譯或者擴展現有的或平臺來搭建的環境。 做了一次分享,主題《使用 Docker 搭建開發環境》,簡單介紹了一下 Docker 的概念,演示了使用 Docker-compose 構建全套 PHP 環境...

    zxhaaa 評論0 收藏0
  • 使用 Docker 搭建開發環境

    摘要:做了一次分享,主題使用搭建開發環境,簡單介紹了一下的概念,演示了使用構建全套環境。應場景通常于如下場景應的動化打包和發布動化測試和持續集成發布在服務型環境中部署和調整數據庫或其他的后臺應從頭編譯或者擴展現有的或平臺來搭建的環境。 做了一次分享,主題《使用 Docker 搭建開發環境》,簡單介紹了一下 Docker 的概念,演示了使用 Docker-compose 構建全套 PHP 環境...

    kycool 評論0 收藏0
  • PHP程序守護進程

    摘要:調用此函數,就可使當前進程脫離終端變成一個守護進程,具體內容參見。命令行程序實現守護進程化有種方法一使用這里就實現了守護進程化。單獨執行,當按下時就會中斷程序執行,會當前進程以及子進程。 一般Server程序都是運行在系統后臺,這與普通的交互式命令行程序有很大的區別。glibc里有一個函數daemon。調用此函數,就可使當前進程脫離終端變成一個守護進程,具體內容參見man daemon...

    My_Oh_My 評論0 收藏0
  • PHP回顧進程編程

    摘要:多進程中與多進程相關的兩個重要拓展是和。函數執行期間,主進程除了等待無法處理其他任務,所以一般不認為這是多進程編程。回收子進程有兩種方式,一種是主進程調用函數等待子進程結束另外一種是處理信號。 轉載請注明文章出處: https://tlanyan.me/php-review... PHP回顧系列目錄 PHP基礎 web請求 cookie web響應 session 數據庫操作 加解...

    lifesimple 評論0 收藏0

發表評論

0條評論

lily_wang

|高級講師

TA的文章

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