日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php 如何守护进程_PHP 如何实现守护进程

發布時間:2024/7/23 php 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php 如何守护进程_PHP 如何实现守护进程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

PHP 如何實現守護進程

發布時間:2020-07-11 15:29:31

來源:億速云

閱讀:58

作者:Leah

PHP 如何實現守護進程?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

守護進程

守護進程作為一種常駐進程服務,很常見,例如 PHP-FPM, NGINX,REDIS,都需要一個父進程來支持整個服務。但是用 PHP 編寫守護進程不多見,今天就來用 PHP 來實現一下。

步驟

● fork 子進程

● 父進程退出

● 設置新的會話

● 重置文件掩碼

● 關閉標準輸入輸出

實現

我們對著以上的步驟來實現,在這之前需要 pcntl 和 posix 擴展,請確保安裝了。function daemon() {

$pid = pcntl_fork();

// fork 失敗

if ($pid < 0) {

exit('fork failed');

} else if ($pid > 0) {

// 退出父進程

exit(0);

}

// 設置新的會員

// setsid 有幾個注意點

// 不能是進程組的組長調用

// 對于進程組組員調用會產生新的會話和進程組,并成為該進程組的唯一成員,調用的進程將脫離終端

if (posix_setsid() < 0) {

exit('set sid failed');

}

// 重置文件掩碼

umask(0);

// 切換工作目錄

chdir('/');

// 關閉標準輸入輸出

fclose(STDIN);

fclose(STDOUT);

fclose(STDERR);

}

細節// 獲取進程ID

var_dump(posix_getpid());

// 獲取進程組ID

var_dump(posix_getpgid(posix_getpid()));

// 獲取進程會話ID

var_dump(posix_getsid(posix_getpid()));

三者結果相同,說明了該進程即使進程組的組長,也是會話首領。

為什么需要 umask (0)

當你在 linux 調用 umask 的時候你會看到一個掩碼值,這個掩碼決定了你創建文件權限范圍,例如本人當前機器的 umask 為

0022

文件的最大權限是 0666,而目錄的最大權限是 0777, 那么當前用戶的創建的目錄權限就是 0755,對于當前用戶而言就是 rwx-rx-rx 權限。而文件則是 0644,對于當前用戶而言 rw-r-r 權限。所以如果沒有重置掩碼的話,那么對于目錄而言就是 0755,而文件則是 0644 了。

注意

如果你在進程使用了 echo var_dump 等函數,一定要把標準輸出等重定向到其他文件流中。新增加下面代碼就可以了。global $stdin, $stdout, $stderr;

$stdin = fopen('/dev/null', 'r');

$stdout = fopen('/www/php/txt.txt','wb');

$stderr = fopen('/dev/null', 'wb');

因為在上面已經關閉了標準輸入輸出,此時文件描述符 fd 已經沒有,所有重新打開之后 fd 從非負開始依次是 0,1,2。正好作為標準輸入輸出的文件。當然重定向到那里需要你自己設置。

最后的二次 fork

這個問題需要好好斟酌,因為是非必須的。目前想不到有什么場景下必須兩次 Fork。

關于PHP 如何實現守護進程問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

總結

以上是生活随笔為你收集整理的php 如何守护进程_PHP 如何实现守护进程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。