天下第七

二也是一种生活态度
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

PHP模拟守护进程

Posted on 2011-08-27 22:58  天下第七  阅读(2979)  评论(0)    收藏  举报

  守护进程,也就是通常说的Daemon进程,是Linux中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件,像C,python,java等语言都支持守护进程,到目前为止,PHP暂不支持守护进程,浏览器每发起一次访问请求时,web服务器调用PHP,PHP执行请求并返回结果后就关闭了,变量无法常驻内存的,虽然你也可以把变量存储到文件、Memcache、Redis中去供下次调用,但链接其实是新建的。

  其实在PHP中实现守护进程,还是有办法模拟的,主要运用到Linux的nohup命令,下面对这个命令进行介绍一下,具体可以查看相关手册。

  百度百科:  

  nohup 命令

  用途LINUX命令用法,不挂断地运行命令。

  语法:nohup Command [ Arg ... ] [ & ]

  描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。

  有了此命令,我们就可以在PHP_CLI模式下创建一个死循环,用来模拟一个守护进程。

1.创建文件daemon.php

/**
 *daemon.php
 */
<?php

set_time_limit(0);

while(1){
    //run your code here..
}

?>

2.启动守护进程

nohup php -f daemon.php > log.php &

  其中,log.php为日志文件,即在while循环中输出的信息,&表示脱离终端,放到后台执行