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 相关文章推荐
一个用于MySQL的PHP XML类
Oct 09 PHP
PHP学习之PHP运算符
Oct 09 PHP
PHP编码规范的深入探讨
Jun 06 PHP
php 删除cookie方法详解
Dec 01 PHP
php实现猴子选大王问题算法实例
Apr 20 PHP
PHP模拟QQ登录的方法
Jul 29 PHP
深入理解PHP内核(一)
Nov 10 PHP
PHP新建类问题分析及解决思路
Nov 19 PHP
thinkPHP查询方式小结
Jan 09 PHP
iis6手工创建网站后无法运行php脚本的解决方法
Jun 08 PHP
自写的利用PDO对mysql数据库增删改查操作类
Feb 19 PHP
PHP生成二维码与识别二维码的方法详解【附源码下载】
Mar 07 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实现批量查询清除一句话后门的代码
2008/01/20 PHP
PHP验证码类代码( 最新修改,完全定制化! )
2010/12/02 PHP
PHP请求Socket接口测试实例
2016/08/12 PHP
php cookie用户登录的详解及实例代码
2017/01/03 PHP
PHP实现单文件、多个单文件、多文件上传函数的封装示例
2019/09/02 PHP
25个非常棒的jQuery滑块插件和教程小结
2011/09/02 Javascript
jQuery动态显示和隐藏datagrid中的某一列的方法
2013/12/11 Javascript
jQuery源码解读之hasClass()方法分析
2015/02/20 Javascript
运行Node.js的IIS扩展iisnode安装配置笔记
2015/03/02 Javascript
jQuery实现浮动层随浏览器滚动条滚动的方法
2015/09/22 Javascript
基于bootstrap实现广告轮播带图片和文字效果
2016/07/22 Javascript
利用node.js搭建简单web服务器的方法教程
2017/02/20 Javascript
详解微信小程序实现跑马灯效果(附完整代码)
2019/04/29 Javascript
中高级前端必须了解的JS中的内存管理(推荐)
2019/07/04 Javascript
将RGB值转换为灰度值的简单算法
2019/10/09 Javascript
使用python 获取进程pid号的方法
2014/03/10 Python
Python爬取qq music中的音乐url及批量下载
2017/03/23 Python
使用Python对Access读写操作
2017/03/30 Python
Python解惑之整数比较详解
2017/04/24 Python
python difflib模块示例讲解
2017/09/13 Python
python实现媒体播放器功能
2018/02/11 Python
python 用opencv调用训练好的模型进行识别的方法
2018/12/07 Python
Python多线程通信queue队列用法实例分析
2020/03/24 Python
Django QuerySet查询集原理及代码实例
2020/06/13 Python
PUMA官方商城:世界领先的运动品牌之一
2016/11/16 全球购物
世界各地的旅游、观光和活动:Isango!
2019/10/29 全球购物
薇姿法国官网:Vichy法国
2021/01/28 全球购物
大学生四个方面的自我评价
2013/09/19 职场文书
《花木兰》教学反思
2014/04/09 职场文书
小学社团活动总结
2014/06/27 职场文书
我是一名护士演讲稿
2014/08/28 职场文书
交通事故被告代理词
2015/05/23 职场文书
女性健康讲座主持词
2015/07/04 职场文书
会议承办单位欢迎词
2019/07/09 职场文书
MySQL时间盲注的五种延时方法实现
2021/05/18 MySQL
SQL 聚合、分组和排序
2021/11/11 MySQL