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 set_magic_quotes_runtime() 函数过时解决方法
Jul 08 PHP
php中将地址生成迅雷快车旋风链接的代码[测试通过]
Apr 20 PHP
基于PHP常用字符串的总结(待续)
Jun 07 PHP
Drupal7连接多个数据库及常见问题解决
Mar 02 PHP
php截取字符串之截取utf8或gbk编码的中英文字符串示例
Mar 12 PHP
ThinkPHP内置jsonRPC的缺陷分析
Dec 18 PHP
php防止网站被攻击的应急代码
Oct 21 PHP
谈谈你对Zend SAPIs(Zend SAPI Internals)的理解
Nov 10 PHP
php中的登陆login实例代码
Jun 20 PHP
PHP设计模式之状态模式定义与用法详解
Apr 02 PHP
yii2中关于加密解密的那些事儿
Jun 12 PHP
php装饰者模式简单应用案例分析
Oct 23 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
这东西价格,可以买几台TECSUN S-2000
2021/03/02 无线电
模拟SQLSERVER的两个函数:dateadd(),datediff()
2006/10/09 PHP
PHP5常用函数列表(分享)
2013/06/07 PHP
2014年10个最佳的PHP图像操作库
2014/07/14 PHP
11个PHPer必须要了解的编程规范
2014/09/22 PHP
php读取torrent种子文件内容的方法(测试可用)
2016/05/03 PHP
PHP魔术方法之__call与__callStatic使用方法
2017/07/23 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
2020/04/05 PHP
一页面多XMLHttpRequest对象
2007/01/22 Javascript
常用的jQuery前端技巧收集
2014/12/24 Javascript
详解javascript中的事件处理
2015/11/06 Javascript
谈一谈js中的执行环境及作用域
2016/03/30 Javascript
jquery表单插件Autotab使用方法详解
2016/06/24 Javascript
Angular.Js的自动化测试详解
2016/12/09 Javascript
Bootstrap popover用法详解
2016/12/22 Javascript
详解微信小程序设置底部导航栏目方法
2017/06/29 Javascript
NodeJS实现图片上传代码(Express)
2017/06/30 NodeJs
JS点击动态添加标签、删除指定标签的代码
2018/04/18 Javascript
jQuery动态操作表单示例【基于table表格】
2018/12/06 jQuery
详解用JS添加和删除class类名
2019/03/25 Javascript
详解Vuex下Store的模块化拆分实践
2019/07/31 Javascript
js实现带搜索功能的下拉框
2020/01/11 Javascript
python 如何快速找出两个电子表中数据的差异
2017/05/26 Python
python写一个md5解密器示例
2018/02/23 Python
python 构造三维全零数组的方法
2018/11/12 Python
使用Python进行防病毒免杀解析
2019/12/13 Python
一些关于python 装饰器的个人理解
2020/08/31 Python
你正在寻找的CSS3 动画技术
2011/07/27 HTML / CSS
在线吉他课程,学习如何弹吉他:Fender Play
2019/02/28 全球购物
大门门卫岗位职责
2013/11/30 职场文书
秘书英文求职信
2014/04/16 职场文书
成立公司计划书
2014/05/07 职场文书
优秀班集体先进事迹材料
2014/05/28 职场文书
公司领导班子群众路线四风问题对照检查材料
2014/10/02 职场文书
工作时间擅自离岗检讨书
2014/10/24 职场文书
大学生简历自我评价2015
2015/03/03 职场文书