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 相关文章推荐
第二节 对象模型 [2]
Oct 09 PHP
基于mysql的论坛(2)
Oct 09 PHP
PHP 第二节 数据类型之数组
Apr 28 PHP
php 判断是否是中文/英文/数字示例代码
Sep 30 PHP
php实现网站留言板功能
Nov 04 PHP
PHP实现获取并生成数据库字典的方法
May 04 PHP
PHP+MySql+jQuery实现的"顶"和"踩"投票功能
May 21 PHP
php 流程控制switch的简单实例
Jun 07 PHP
CakePHP框架Model函数定义方法示例
Aug 04 PHP
thinkphp5框架实现的自定义扩展类操作示例
May 16 PHP
PHP开启目录引索+fancyindex漂亮目录浏览带搜索功能
Sep 23 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
Feb 21 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
帅气的琦玉老师
2020/03/02 日漫
PHP 基本语法格式
2009/12/15 PHP
php中禁止单个IP与ip段访问的代码小结
2012/07/04 PHP
关于查看MSSQL 数据库 用户每个表 占用的空间大小
2013/06/21 PHP
php实现MD5加密16位(不要默认的32位)
2013/08/12 PHP
jquery获取多个checkbox的值异步提交给php的方法
2015/06/24 PHP
Ajax实现对静态页面的文章访问统计功能示例
2016/10/10 PHP
用js遍历 table的脚本
2008/07/23 Javascript
判断目标是否是window,document,和拥有tagName的Element的代码
2010/05/31 Javascript
深入理解JavaScript系列(7) S.O.L.I.D五大原则之开闭原则OCP
2012/01/15 Javascript
异步javascript的原理和实现技巧介绍
2012/11/08 Javascript
js文本框输入点回车触发确定兼容IE、FF等
2013/11/19 Javascript
深入理解JavaScript系列(17):面向对象编程之概论详细介绍
2015/03/04 Javascript
完美实现bootstrap分页查询
2015/12/09 Javascript
JS原型链怎么理解
2016/06/27 Javascript
微信小程序实现皮肤功能(夜间模式)
2017/06/18 Javascript
Vue2.2.0+新特性整理及注意事项
2018/08/22 Javascript
vue中多路由表头吸顶实现的几种布局方式
2019/04/12 Javascript
记录一次开发微信网页分享的步骤
2019/05/07 Javascript
webpack+vue.js构建前端工程化的详细教程
2020/05/10 Javascript
如何使用jQuery操作Cookies方法解析
2020/09/08 jQuery
vue element-ul实现展开和收起功能的实例代码
2020/11/25 Vue.js
Python实现公历(阳历)转农历(阴历)的方法示例
2017/08/22 Python
python+selenium打印当前页面的titl和url方法
2018/06/22 Python
用Python爬取QQ音乐评论并制成词云图的实例
2019/08/24 Python
django-crontab实现服务端的定时任务的示例代码
2020/02/17 Python
Python requests模块session代码实例
2020/04/14 Python
Keras 利用sklearn的ROC-AUC建立评价函数详解
2020/06/15 Python
孕妇内衣和胸罩:Cake Maternity
2018/07/16 全球购物
荷兰度假屋租赁网站:Aan Zee
2020/02/28 全球购物
澳大利亚头发和美容产品购物网站:OZ Hair & Beauty
2020/03/27 全球购物
What's the difference between Debug and Trace class? (Debug类与Trace类有什么区别)
2013/09/10 面试题
企业法人授权委托书
2014/04/03 职场文书
2019年房屋委托租赁合同范本(通用版)!
2019/07/17 职场文书
JavaScript与JQuery框架基础入门教程
2021/07/15 Javascript
教你使用VS Code的MySQL扩展管理数据库的方法
2022/01/22 MySQL