PHP扩展程序实现守护进程


Posted in PHP onApril 16, 2015

一般Server程序都是运行在系统后台,这与普通的交互式命令行程序有很大的区别。glibc里有一个函数daemon。调用此函数,就可使当前进程脱离终端变成一个守护进程,具体内容参见man daemon。PHP中暂时没有此函数,当然如果你有兴趣的话,可以写一个PHP的扩展函数来实现。

PHP命令行程序实现守护进程化有2种方法:

一 、使用nohup

nohup php myprog.php > log.txt &

这里就实现了守护进程化。

单独执行 php myprog.php,当按下ctrl+c时就会中断程序执行,会kill当前进程以及子进程。

php myprog.php &,这样执行程序虽然也是转为后台运行,实际上是依赖终端的,当用户退出终端时进程就会被杀掉。

二、使用PHP代码来实现

function daemonize()
{
$pid = pcntl_fork();
if ($pid == -1)
{
die("fork(1) failed!\n");
}
elseif ($pid > 0)
{
//让由用户启动的进程退出
exit(0);
}

//建立一个有别于终端的新session以脱离终端
posix_setsid();

$pid = pcntl_fork();
if ($pid == -1)
{
die("fork(2) failed!\n");
}
elseif ($pid > 0)
{
//父进程退出, 剩下子进程成为最终的独立进程
exit(0);
}
}

daemonize();
sleep(1000);

用上面代码即可实现守护进程化,当你的PHP程序需要转为后台运行时,只需要调用一次封装好的函数daemonize()即可。
注:这里没有实现标准输入输出的重定向。

以上所述就是本文的全部内容了,希望大家能够喜欢。

PHP 相关文章推荐
PHP中的串行化变量和序列化对象
Sep 05 PHP
php array_slice函数的使用以及参数详解
Aug 30 PHP
探讨:parse url解析URL,返回其组成部分
Jun 14 PHP
php获取新浪微博数据API实例
Nov 12 PHP
ThinkPHP中ajax使用实例教程
Aug 22 PHP
php+MySQL判断update语句是否执行成功的方法
Aug 28 PHP
PHP中实现Bloom Filter算法
Mar 30 PHP
php根据用户语言跳转相应网页
Nov 04 PHP
php生成验证码,缩略图及水印图的类分享
Apr 07 PHP
php is_executable判断给定文件名是否可执行实例
Sep 26 PHP
PHP通过文件路径获取文件名的实例代码
Oct 14 PHP
laravel csrf排除路由,禁止,关闭指定路由的例子
Oct 21 PHP
php简单实现查询数据库返回json数据
Apr 16 #PHP
PHP中SESSION的注销与清除
Apr 16 #PHP
PHP中trim()函数简单使用指南
Apr 16 #PHP
php检查是否是ajax请求的方法
Apr 16 #PHP
php将日期格式转换成xx天前的格式
Apr 16 #PHP
为百度UE编辑器上传图片添加水印功能
Apr 16 #PHP
php+ajax实现的点击浏览量加1
Apr 16 #PHP
You might like
获取Javscript执行函数名称的方法
2006/12/22 Javascript
javascript下给元素添加事件的方法与代码
2007/08/13 Javascript
jquery imgareaselect 使用利用js与程序结合实现图片剪切
2009/07/30 Javascript
js+css在交互上的应用
2010/07/18 Javascript
JavaScript二维数组实现的省市联动菜单
2014/05/08 Javascript
jQuery实现当前页面标签高亮显示的方法
2015/03/10 Javascript
JS获取input file绝对路径的方法(推荐)
2016/08/02 Javascript
js简单时间比较的方法
2016/08/02 Javascript
微信小程序 form组件详解
2016/10/25 Javascript
五步轻松实现JavaScript HTML时钟效果
2020/03/25 Javascript
Vue实现内部组件轮播切换效果的示例代码
2018/04/07 Javascript
解决vue项目中type=”file“ change事件只执行一次的问题
2018/05/16 Javascript
浅谈在不使用ssr的情况下解决Vue单页面SEO问题(2)
2018/11/08 Javascript
JS实现图片切换效果
2018/11/17 Javascript
微信小程序webview与h5通过postMessage实现实时通讯的实现
2019/08/20 Javascript
ssm+vue前后端分离框架整合实现(附源码)
2020/07/08 Javascript
[49:20]2014 DOTA2国际邀请赛中国区预选赛5.21 CIS VS TongFu
2014/05/22 DOTA
[01:25]DOTA2自定义游戏灵园鬼域等你踏足
2015/10/30 DOTA
Python+Socket实现基于TCP协议的客户与服务端中文自动回复聊天功能示例
2017/08/31 Python
Python异常处理操作实例详解
2018/05/10 Python
在Pandas中DataFrame数据合并,连接(concat,merge,join)的实例
2019/01/29 Python
python 调用钉钉机器人的方法
2019/02/20 Python
python实现可逆简单的加密算法
2019/03/22 Python
python字符串下标与切片及使用方法
2020/02/13 Python
Python filter()及reduce()函数使用方法解析
2020/09/05 Python
关于webview适配H5上传照片或者视频文件的方法
2020/11/04 HTML / CSS
欧洲第一的摇滚和金属乐队服装网站:EMP
2017/10/26 全球购物
创造美妙香氛体验:Aera扩散器和香水
2018/11/25 全球购物
美国电子产品购物网站:BuyDig.com
2020/06/17 全球购物
Java的基础面试题附答案
2016/01/10 面试题
党支部公开承诺书
2014/03/28 职场文书
团日活动总结报告
2014/06/25 职场文书
党员志愿者活动方案
2014/08/28 职场文书
矛盾论读书笔记
2015/06/29 职场文书
在 SQL 语句中处理 NULL 值的方法
2021/06/07 SQL Server
HDFS免重启挂载新磁盘
2022/04/06 Servers