使用qpm创建daemon程序
2015-03-10 21:36
232 查看
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();
}
);
相关文章推荐
- 使用qpm创建daemon程序
- C# 2.0:使用匿名方法、迭代程序和局部类来创建优雅的代码
- 使用JDBC创建数据库访问程序
- MSDN Webcast FAQ:使用MSMQ创建Windows Mobile远程通讯程序
- 不使用ATL向导,创建一个简单的ATL对话框程序.
- 使用NetBeans C/C++ Pack 5.5 创建程序(二)
- 使用timer控件创建一个简单的报警程序
- C++--如何实现SDI程序使用CSplitterWnd创建的多个视图的动态地显示和关闭视图
- 使用Visual C++创建ARX程序
- 使用aop创建松散耦合(分析日志程序)
- C++--如何实现SDI程序使用CSplitterWnd创建的多个视图的动态地显示和关闭视图
- C# 2.0:使用匿名方法、迭代程序和局部类来创建优雅的代码
- C# 2.0:使用匿名方法、迭代程序和局部类来创建优雅的代码
- 用masm32创建快捷方式--使用com的演示程序
- 使用VS2003创建WEB程序的时候出现"AutoMation服务器不能创建对象"错误
- 使用JBuilder 2005创建程序注释(2)
- 使用VS2003创建WEB程序的时候出现"AutoMation服务器不能创建对象"错误
- 在.net中使用Udp协议创建简单的聊天程序
- 使用ATL创建COM程序实例
- C++--如何实现SDI程序使用CSplitterWnd创建的多个视图的动态地显示和关闭视图