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修改密码方法总结
Mar 25 PHP
fleaphp下不确定的多条件查询的巧妙解决方法
Sep 11 PHP
php中的一些数组排序方法分享
Jul 20 PHP
基于Linux调试工具strace与gdb的常用命令总结
Jun 03 PHP
解析Extjs与php数据交互(增删查改)
Jun 25 PHP
PHP仿博客园 个人博客(2) 数据库增添改删
Jul 05 PHP
php获取qq用户昵称和在线状态(实例分析)
Oct 27 PHP
PHP图片裁剪与缩放示例(无损裁剪图片)
Feb 08 PHP
thinkPHP显示不出验证码的原因与解决方法分析
May 20 PHP
php中curl和soap方式请求服务超时问题的解决
Jun 11 PHP
Laravel框架路由和控制器的绑定操作方法
Jun 12 PHP
PHP字符串和十六进制如何实现互相转换
Jul 16 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/05/04 PHP
Laravel 5框架学习之路由、控制器和视图简介
2015/04/07 PHP
Firefox getBoxObjectFor getBoundingClientRect联系
2008/10/26 Javascript
JavaScript 学习笔记(十一)
2010/01/19 Javascript
JavaScript 面向对象的之私有成员和公开成员
2010/05/04 Javascript
jquery蒙版控件实现代码
2010/12/08 Javascript
jqPlot 图表中文API使用文档及源码和在线示例
2012/02/07 Javascript
手机号码,密码正则验证
2014/09/04 Javascript
JS简单实现tab切换效果的多窗口显示功能
2016/09/07 Javascript
jQuery ui autocomplete选择列表被Bootstrap模态窗遮挡的完美解决方法
2016/09/23 Javascript
详解express与koa中间件模式对比
2017/08/07 Javascript
使用vue-cli webpack 快速搭建项目的代码
2018/11/21 Javascript
微信小程序登录按钮遮罩浮层效果的实现方法
2018/12/16 Javascript
开源一个微信小程序仪表盘组件过程解析
2019/07/30 Javascript
JS实现audio音频剪裁剪切复制播放与上传(步骤详解)
2020/07/28 Javascript
python字符串排序方法
2014/08/29 Python
python的pdb调试命令的命令整理及实例
2017/07/12 Python
Python读取txt文件数据的方法(用于接口自动化参数化数据)
2018/06/27 Python
linux安装Python3.4.2的操作方法
2018/09/28 Python
获取django框架orm query执行的sql语句实现方法分析
2019/06/20 Python
python 使用matplotlib 实现从文件中读取x,y坐标的可视化方法
2019/07/04 Python
利用Python进行图像的加法,图像混合(附代码)
2019/07/14 Python
python写一个随机点名软件的实例
2019/11/28 Python
Django之choices选项和富文本编辑器的使用详解
2020/04/01 Python
python异常处理之try finally不报错的原因
2020/05/18 Python
用python计算文件的MD5值
2020/12/23 Python
Perfume’s Club澳大利亚官网:西班牙领先的在线美容店
2021/02/01 全球购物
化工专业应届生求职信
2013/11/08 职场文书
《难忘的泼水节》教学反思
2014/02/27 职场文书
领导干部作风建设工作总结
2014/10/23 职场文书
群众路线自查报告及整改措施
2014/11/04 职场文书
2015高中教师个人工作总结
2015/07/21 职场文书
2015国庆节放假通知范文
2015/07/30 职场文书
2016年“六一儿童节”校园广播稿
2015/12/17 职场文书
乡镇团代会开幕词
2016/03/04 职场文书
PostgreSQL聚合函数介绍以及分组和排序
2022/04/12 PostgreSQL