文档章节

使用qpm创建daemon程序

AlexQ
 AlexQ
发布于 2015/03/10 21:36
字数 367
阅读 95
收藏 3

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)

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

© 著作权归作者所有

AlexQ
粉丝 5
博文 10
码字总数 3706
作品 0
海淀
私信 提问
QPM-PHP进程管理框架

QPM全名是 Quick Process Management Framework for PHP. PHP 是强大的web开发语言,以至于大家常常忘记PHP 可以用来开发健壮的命令行(CLI)程序以至于daemon程序。 而编写daemon程序免不了...

AlexQ
2015/03/10
397
0
PHP进程管理框架--QPM

QPM全名是 Quick Process Management Framework in PHP. PHP 是强大的 web 开发语言,以至于大家常常忘记 PHP 可以用来开发健壮的命令行(CLI)程序以至于 daemon 程序。 而编写 daemon 程序...

赵青
2015/02/27
1K
0
PHP使用QPM实现多进程并行任务处理程序

考虑用PHP实现以下场景: 有一个抓站的URL列表保存在队列里,后台程序读取这个队列,然后转交给子进程去抓取HTML存放到文件里。 为了提高效率,允许多任务并行执行,但为了避免机器负载过高,...

AlexQ
2015/03/10
2.9K
13
PyHusky快速开始

快速开始 构建 本节假设Husky已经被成功部署。若Husky还未被部署于集群之上,请参照Husky中文文档-部署. 编译Daemon后端应用程序. PyHusky需要编译Maser和Daemon。在构建目录,使用 编译Mas...

happengft
2017/02/22
0
0
守护进程daemon的创建和使用

daemon的创建和使用 创建守护进的关键步骤: step 1.创建子进程,父进程退出 step 2.在子进程中创建新会话 step 3.改变当前目录为根目录 step 4.重设文件权限掩码 step 5.关闭文件描述符 以下...

JialinWu
2013/12/11
2.7K
0

没有更多内容

加载失败,请刷新页面

加载更多

一次看懂 Https 证书认证

TLS > 传输层安全性协定 TLS(Transport Layer Security),及其前身安全套接层 SSL(Secure Sockets Layer)是一种安全协议,目的是为网际网路通信,提供安全及数据完整性保障。 如图,TLS...

极客收藏夹
36分钟前
4
0
https证书买哪家好?有哪些供应商

在选购https证书前除了要了解类型外,还需要了解https证书供应商,毕竟不同的供应商,提供的产品质量与服务也是有差异的。今天小编就为大家讲讲https证书供应商方面的内容,希望各位会喜欢。...

安信证书
38分钟前
5
0
Zuul 配置

概述:zuul底层是基于servlet,是由一系列的filter链构成。 1、路由配置 a、单例serverId映射 zuul: routes: client-a: path: /client/** serviceId: client-a 意思是...

java框架开发者
55分钟前
3
0
zk中FinalRequestProcessor解析

是处理器最后一个环节 FinalRequestProcessor implements RequestProcessor 处理器链最后一个环节处理事务和非事务请求最后一个环节 构造器 public FinalRequestProcessor(ZooKeeperServer z...

writeademo
55分钟前
4
0
Axios 详解

首先祝广大程序猿们节日快乐! 一、axios简介 基于promise,用于浏览器和node.js的http客户端 二、特点 支持浏览器和 node.js 支持 promise 能拦截请求和响应 能转换请求和响应数据 能取消请求...

张兴华ZHero
56分钟前
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部