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入门小知识
Mar 24 PHP
DISCUZ 论坛管理员密码忘记的解决方法
May 14 PHP
国外比较好的几个的Php开源建站平台小结
Apr 22 PHP
利用PHP实现图片等比例放大和缩小的方法详解
Jun 06 PHP
理解PHP中的stdClass类
Apr 18 PHP
php的4种常见运行方式
Mar 20 PHP
Symfony的安装和配置方法
Mar 17 PHP
一波PHP中cURL库的常见用法代码示例
May 06 PHP
PHP结合Ueditor并修改图片上传路径
Oct 16 PHP
php获取文章内容第一张图片的方法示例
Jul 03 PHP
Thinkphp5框架实现图片、音频和视频文件的上传功能详解
Aug 27 PHP
laravel 实现用户登录注销并限制功能
Oct 24 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
php图像处理函数大全(推荐收藏)
2013/07/11 PHP
在你的网页中嵌入外部网页的方法
2007/04/02 Javascript
javascript 面向对象的JavaScript类
2010/05/04 Javascript
JavaScript中获取元素索引的函数
2010/09/10 Javascript
iframe的父子窗口之间的对象相互调用基本用法
2013/09/03 Javascript
js获取UserControl内容为拼html时提供方便
2014/11/02 Javascript
BootStrap学习笔记之nav导航栏和面包屑导航
2017/01/03 Javascript
vue中如何实现后台管理系统的权限控制的方法示例
2018/09/19 Javascript
如何使用puppet替换文件中的string
2018/12/06 Javascript
基于layui的下拉列表的数据回显方法
2019/09/24 Javascript
基于JavaScript实现贪吃蛇游戏
2020/03/16 Javascript
vue 解决兄弟组件、跨组件深层次的通信操作
2020/07/27 Javascript
聊聊vue 中的v-on参数问题
2021/01/29 Vue.js
python logging模块的使用总结
2019/07/09 Python
Django 迁移、操作数据库的方法
2019/08/02 Python
python输入错误后删除的方法
2019/10/12 Python
Python使用循环神经网络解决文本分类问题的方法详解
2020/01/16 Python
2020新版本pycharm+anaconda+opencv+pyqt环境配置学习笔记,亲测可用
2020/03/24 Python
html5本地存储_动力节点Java学院整理
2017/07/12 HTML / CSS
LACOSTE波兰官网:Polo衫、服装和鞋类
2020/09/29 全球购物
PHP如何调用MYSQL存储过程
2014/05/30 面试题
会计应届生的自荐信
2013/12/13 职场文书
制药工程专业个人求职自荐信
2014/01/25 职场文书
函授生自我鉴定
2014/03/25 职场文书
一年级学生评语大全
2014/04/21 职场文书
竞选副班长演讲稿
2014/04/24 职场文书
趣味运动会策划方案
2014/06/02 职场文书
社区矫正工作方案
2014/06/04 职场文书
教育系统干部作风整顿心得体会
2014/09/09 职场文书
父亲婚礼答谢词
2015/01/04 职场文书
毕业设计论文致谢词
2015/05/14 职场文书
余世维讲座观后感
2015/06/11 职场文书
在职证明书模板
2015/06/15 职场文书
编写python程序的90条建议
2021/04/14 Python
redis requires ruby version2.2.2的解决方案
2021/07/15 Redis
css实现左上角飘带效果的完整代码
2022/03/18 HTML / CSS