使用PHP指令碼來寫Daemon程式
declare( ticks = 1 );
// This case will check the config file regularly, if the config file changed, it will restart it self
// If you want to restart the daemon gracefully, give it a HUP signal
// by shiqiang<cocowool@gmail.com> at 2011-12-04
$init_md5 = md5_file( `config.php`);
// register signal handler
pcntl_signal( SIGALRM, “signal_handler”, true );
pcntl_signal( SIGHUP, `signal_handler`, TRUE );
$job_flag = FALSE; //Job status flag, to justify if the job has been finished
$signal_flag = FALSE; //Signal status flag, to justify whether we received the kill -1 signal
while( 1 ){
$job_flag = FALSE; //Job status flag
print “Worker start running …
“;
sleep(5);
print “Worker`s task done …
“;
$flag = TRUE; //Job status flag
AutoStart( $signal_flag );
}
function signal_handler( $signal ) {
global $job_flag;
global $signal_flag;
switch( $signal ){
case SIGQUIT:
print date(`y-m-d H:i:s`, time() ) . ” Caught Signal : SIGQUIT – No : $signal
“;
exit(0);
break;
case SIGSTOP:
print date(`y-m-d H:i:s`, time() ) . ” Caught Signal : SIGSTOP – No : $signal
“;
break;
case SIGHUP:
print date(`y-m-d H:i:s`, time() ) . ” Caught Signal : SIGHUP – No : $signal
“;
if( $flag === TRUE ){
AutoStart( TRUE );
}else{
$signal_flag = TRUE;
}
break;
case SIGALRM:
print date(`y-m-d H:i:s`, time() ) . ” Caught Signal : SIGALRM – No : $signal
“;
//pcntl_exec( `/bin/ls` );
pcntl_alarm( 5 );
break;
default:
break;
}
}
function AutoStart( $signal = FALSE, $filename = `config.php` ){
global $init_md5;
if( $signal || md5_file( $filename ) != $init_md5 ){
print “The config file has been changed, we are going to restart.
“;
$pid = pcntl_fork();
if( $pid == -1 ){
print “Fork error
“;
}else if( $pid > 0 ){
print “Parent exit
“;
exit(0);
}else{
$init_md5 = md5_file( $filename );
print “Child continue to run
“;
}
}
}
相關文章
- 使用PHP和Phalcon作daemon程式PHP
- coreseek實戰(四):php介面的使用,完善php指令碼程式碼PHP指令碼
- php程式daemon化的正確做法PHP
- 讓我們來用php編寫一個搶購商品指令碼PHP指令碼
- PHP多程式並行執行php指令碼PHP並行指令碼
- 如何寫出安全又可靠的PHP指令碼PHP指令碼
- Centos下使用php呼叫shell指令碼CentOSPHP指令碼
- 通過編寫指令碼和程式來擴充套件SSIS包NZ指令碼套件
- 如何使用zx編寫shell指令碼指令碼
- phpMyAdminsetup.php指令碼的任意PHP程式碼注入漏洞PHP指令碼
- Linux程式設計:將PHP作為Shell指令碼使用(轉)Linux程式設計PHP指令碼
- PbootCms模板中如何寫 PHP 程式碼?bootPHP
- 使用pycharm or vscode來編寫python程式碼?PyCharmVSCodePython
- 有本事你來寫程式碼
- Centos環境自寫指令碼檢視使用php或nginx佔用記憶體CentOS指令碼PHPNginx記憶體
- php百萬資料透過指令碼檔案寫入csvPHP指令碼
- Python Plumbum 簡介:用 Python 來寫指令碼Python指令碼
- PbootCms模板中怎麼寫PHP程式碼bootPHP
- 使用Lua編寫可嵌入式指令碼指令碼
- PS指令碼篇--1.程式碼是什麼,寫程式碼幹嘛?指令碼
- PHP指令碼:隨心所欲的程式碼逐漸流行(轉)PHP指令碼
- 使用php作linux自動執行指令碼PHPLinux指令碼
- gdb指令碼編寫指令碼
- Shell 指令碼編寫指令碼
- shell 指令碼寫法:指令碼
- 使用 Async / Await 來編寫簡明的非同步程式碼AI非同步
- 手寫指令碼程式碼太累!搞一個生成工具吧指令碼
- [積德篇] 如何少寫PHP "爛"程式碼PHP
- [積德篇] 如何少寫PHP “爛”程式碼PHP
- php程式碼檢測工具使用PHP
- php中使用 ffmpeg(部分程式碼)PHP
- 經常半夜睡醒,爬起來寫程式碼
- 《PHP精粹:編寫高效PHP程式碼》——第1章物件導向程式設計PHP物件程式設計
- 直接拿來用 10個PHP程式碼片段PHP
- 自己寫的fabric指令碼指令碼
- 油猴指令碼編寫指令碼
- 編寫git指令碼.shGit指令碼
- 輕鬆使用“Explain Shell”指令碼來理解 Shell 命令AI指令碼