守護程序之PHP實現

2021-09-17 01:18:08 字數 776 閱讀 6512

守護程序(daemon)是一種特殊的程序,它的生命週期很長,它在後台執行並且沒有控制終端(這樣可以保證守護程序不會接收到各種來自終端的訊號)。

比如:crontab、sshd、nginx等,都會使用守護程序的形式執行,確保可以一直正常的提供服務。

/**

* daemon(守護程序) php實現

* @author zhjx922

*/$pid = pcntl_fork();

if ($pid == -1) else if ($pid)

//setsid

posix_setsid();

echo "成功輸出,脫離終端" . php_eol;

sleep(5);

$pid = pcntl_fork();

if ($pid == -1) else if ($pid)

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);

守護程序之守護程序的慣例

在unix系統中,守護程序遵循下列公共慣例 例項 程式清單13 3所示程式說明了守護程序可以重讀其配置檔案的一種方法。該程式使用sigwait以及多執行緒 可參考 程式清單13 3 守護程序重讀配置檔案 include apue.h include include sigset t mask ext...

守護程序之單例項守護程序

為了正常執行,某些守護程序實現為單例項的,也就是在任一時刻只執行該守護程序的乙個副本。例如,該守護程序可能需要排它地訪問乙個裝置。在cron守護程序情況下,如果同時有多個例項執行,那麼每個副本都可能試圖開始某個預定的操作,於是造成該操作的重複執行,這很可能導致出錯。如果守護程序需要訪問一裝置,而該裝...

php 守護程序的實現

1 php沒有執行在安全模式,關掉安全模式,即 safe mode off 2 禁用函式列表 disable functions exec,system,shell exec,proc open,popen,一般來說,exec 這些函式為了安全,都會禁用,在php.ini裡面把這些禁用的函式放出來。...