使用qpm创建daemon程序

Daemon程序又称为守护进程,特点是在后台持续运行,不与控制台、GUI交互。PHP中,Daemon 程序是以CLI模式运行的,与我们通常做网页开发的CGI模式有所不同。PHP CGI 程序的生命周期通常是一个HTTP请求,守护进程则是长期运行的。

例如 foo.php

<?php
while(true) {
  file_put_contents('foo.log', date('Y-m-d H:i:s')."\n", FILE_APPEND);
  sleep(10);
};
?>

以上程序就是一个长期运行的例子,每隔10秒,程序会向foo.log文件追加一行时间信息。在CGI模式下,进程会收到PHP最大运行时间的限制,超时后自动退出,在CLI模式下,程序则持续运行,直到接收到终止信号。

作为Daemon程序,如果从控制台启动,如果不做特殊处理,控制台关闭会导致程序推出,因此,通常的做法是: 

1、启动脚本; 2、复制进程(fork); 3、子进程转入后台运行; 4、父进程退出,子进程继续在后台运行。

QPM 是一个PHP 进程管理框架,可用于简化Daemon开发,项目地址在:https://github.com/Comos/qpm

使用QPM实现如下(例程见:qpm_simple_daemon.php)

require_once 'qpm/process/Process.php';
use qpm\process\Process as Process;
//实际的工作内容
function work() {
  while(true) {
    file_put_contents(__FILE__'.log', date('Y-m-d H:i:s')."\n", FILE_APPEND);
    sleep(10);
  };
}
//通过回调启动子进程
Process::current()->forkByCallable(
  function() {
    //子进程将自己转入后台
    Process::current()->toBackground();
    work();
  }
);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值