您现在的位置:计算机技术学习网 > 技术中心 > WEB编程 > PHP >

使用PHP脚本来写Daemon程序(3)

来源:未知 责任编辑:责任编辑 发表时间:2014-02-02 17:47 点击:

5、为Worker编写信号控制,接受重启指令,类似于http restart graceful 指令。

 

 

最后,结合4和5两种方法,可以实现这样一个Daemon,如果配置文件发生了变化,他就会自动重启;如果接受到了用户的kill  -1 pid 信号,也会重新启动。

 

 

代码如下:

 

 

<?php

 

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 ... \n";

    sleep(5);

    print "Worker's task done ... \n";

    $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 \n";

            exit(0);

            break;

        case SIGSTOP:

            print date('y-m-d H:i:s', time() ) . " Caught Signal : SIGSTOP - No : $signal \n";

            break;

        case SIGHUP:

            print date('y-m-d H:i:s', time() ) . " Caught Signal : SIGHUP - No : $signal \n";

            if( $flag === TRUE ){

                AutoStart( TRUE );

            }else{

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • PHP测试
  • 十天学会php之第六天
  • 几种显示数据的方法的比较
  • 使用xmlhttp为网站增加域名查询功能
  • PHP+MYSQL+Javascript数据库查询结果的动态显示
  • 查找数组中指定键名的值
  • 用redis实现跨服务器session
  • 用新浪微博接口发送图片微博失败的原因
  • smarty局部缓存技术[源码分析]
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1