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 动态执行带有参数的类方法
Apr 10 PHP
PHP的一个完美GIF等比缩放类,附带去除缩放黑背景
Apr 01 PHP
WampServer下安装多个版本的PHP、mysql、apache图文教程
Jan 07 PHP
php 利用socket发送HTTP请求(GET,POST)
Aug 24 PHP
PHP开发中AJAX技术的简单应用
Dec 11 PHP
Yii2 assets清除缓存的方法
May 16 PHP
php快速排序原理与实现方法分析
May 26 PHP
php版微信数据统计接口用法示例
Oct 12 PHP
YII2 实现多语言配置的方法分享
Jan 11 PHP
PHP静态成员变量
Feb 14 PHP
PHP编程中的Session阻塞问题与解决方法分析
Aug 07 PHP
PHP中16个高危函数整理
Sep 19 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
WordPress中重置文章循环的rewind_posts()函数讲解
2016/01/11 PHP
Laravel框架实现定时发布任务的方法
2018/08/16 PHP
滚动经典最新话题[prototype框架]下编写
2006/10/03 Javascript
jquery中邮箱地址 URL网站地址正则验证实例代码
2013/09/15 Javascript
详解JavaScript对Date对象的操作问题(生成一个倒数7天的数组)
2015/10/01 Javascript
javascript常用经典算法实例详解
2015/11/25 Javascript
js判断当前页面在移动设备还是在PC端中打开
2016/01/06 Javascript
javascript匀速运动实现方法分析
2016/01/08 Javascript
AngularJS实现表单验证功能
2017/01/09 Javascript
微信小程序 仿猫眼实现实例代码
2017/03/14 Javascript
浅谈vue中.vue文件解析流程
2018/04/24 Javascript
js限制输入框只能输入数字(onkeyup触发)
2018/09/28 Javascript
百度小程序自定义通用toast组件
2019/07/17 Javascript
LayUi数据表格自定义赋值方式
2019/10/26 Javascript
[02:32]DOTA2英雄基础教程 祸乱之源
2013/12/23 DOTA
Python数据结构与算法之字典树实现方法示例
2017/12/13 Python
python 读入多行数据的实例
2018/04/19 Python
详解flask入门模板引擎
2018/07/18 Python
Python操作Excel插入删除行的方法
2018/12/10 Python
Python爬虫beautifulsoup4常用的解析方法总结
2019/02/25 Python
Matplotlib scatter绘制散点图的方法实现
2020/01/02 Python
浅谈Python的方法解析顺序(MRO)
2020/03/05 Python
python/golang 删除链表中的元素
2020/09/14 Python
CSS3实现多背景模拟动态边框的效果
2016/11/08 HTML / CSS
Myprotein蛋白粉美国官网:欧洲畅销运动营养品牌
2016/11/15 全球购物
世界上最大的在线学习和教学市场:Udemy
2017/11/08 全球购物
Orvis官网:自1856年以来,优质服装、飞钓装备等
2018/12/17 全球购物
如何强制垃圾回收
2015/10/06 面试题
会计电算化大学生职业规划书
2014/02/05 职场文书
人事部专员岗位职责
2014/03/04 职场文书
党校培训自我鉴定范文
2014/03/20 职场文书
大型演出策划方案
2014/05/28 职场文书
事业单位人员的自我评价范文
2014/09/21 职场文书
抗洪救灾标语
2014/10/08 职场文书
政风行风整改报告
2014/11/06 职场文书
2015年仓库管理员工作总结
2015/04/21 职场文书