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 相关文章推荐
第十四节 命名空间 [14]
Oct 09 PHP
PHP脚本的10个技巧(1)
Oct 09 PHP
解决中英文字符串长度问题函数
Jan 16 PHP
一贴学会PHP 新手入门教程
Aug 03 PHP
对text数据类型不支持代码页转换 从: 1252 到: 936
Apr 23 PHP
apache+php完美解决301重定向的两种方法
Jun 08 PHP
php中Session的生成机制、回收机制和存储机制探究
Aug 19 PHP
ThinkPHP上使用多说评论插件的方法
Oct 31 PHP
使用Appcan客户端自动更新PHP版本号(全)
Jul 31 PHP
php反射类ReflectionClass用法分析
May 12 PHP
基于PHP-FPM进程池探秘
Oct 17 PHP
Laravel 5.5 实现禁用用户注册示例
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下使用curl模拟用户登陆的代码
2010/09/10 PHP
PDO预处理语句PDOStatement对象使用总结
2014/11/20 PHP
YII2框架中日志的配置与使用方法实例分析
2020/03/18 PHP
yii2.0框架数据库操作简单示例【添加,修改,删除,查询,打印等】
2020/04/13 PHP
js数组操作常用方法
2014/05/08 Javascript
多个checkbox被选中时如何判断是否有自己想要的
2014/09/22 Javascript
javascript中错误使用var造成undefined
2016/03/31 Javascript
浅析Nodejs npm常用命令
2016/06/14 NodeJs
使用BootStrap实现标签切换原理解析
2017/03/14 Javascript
javascript json字符串到json对象转义问题
2019/01/22 Javascript
详解Webpack4多页应用打包方案
2020/07/16 Javascript
python使用pyhook监控键盘并实现切换歌曲的功能
2014/07/18 Python
Python中多线程及程序锁浅析
2015/01/21 Python
Python脚本在Appium库上对移动应用实现自动化测试
2015/04/17 Python
在ironpython中利用装饰器执行SQL操作的例子
2015/05/02 Python
python中hashlib模块用法示例
2017/10/30 Python
利用Python暴力破解zip文件口令的方法详解
2017/12/21 Python
PYTHON基础-时间日期处理小结
2018/05/05 Python
python实现最长公共子序列
2018/05/22 Python
Python 20行简单实现有道在线翻译的详解
2019/05/15 Python
Python3 Tkinkter + SQLite实现登录和注册界面
2019/11/19 Python
CSS3实现伪类hover离开时平滑过渡效果示例
2017/08/10 HTML / CSS
如何查询Oracle数据库中已经创建的索引
2013/10/11 面试题
sort命令的作用和用法
2013/08/25 面试题
学前教育毕业生自荐信
2013/10/29 职场文书
销售顾问的岗位职责
2013/11/13 职场文书
公司新员工的演讲稿注意事项
2014/01/01 职场文书
高三毕业典礼主持词
2014/03/27 职场文书
指导教师评语
2014/04/26 职场文书
2014年流动人口工作总结
2014/11/26 职场文书
期末复习计划
2015/01/19 职场文书
就业导师推荐信范文
2015/03/27 职场文书
2015年会计个人工作总结
2015/04/02 职场文书
Windows中Redis安装配置流程并实现远程访问功能
2021/06/07 Redis
SQL Server实现分页方法介绍
2022/03/16 SQL Server
海贼王十大潜力果实,路飞仅排第十,第一可毁世界(震震果实)
2022/03/18 日漫