PHP程序守护进程化实现方法详解


Posted in PHP onJuly 16, 2020

一般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类
Jul 15 PHP
从康盛产品(discuz)提取出来的模板类
Jun 28 PHP
php中计算未知长度的字符串哪个字符出现的次数最多的代码
Aug 14 PHP
zend optimizer在wamp的基础上安装图文教程
Oct 26 PHP
php强制文件下载而非在浏览器打开的自定义函数分享
May 08 PHP
ThinkPHP的Widget扩展实例
Jun 19 PHP
CI框架给视图添加动态数据
Dec 01 PHP
php实现随机显示图片方法汇总
May 21 PHP
PHP生成图像验证码的方法小结(2种方法)
Jul 18 PHP
php compact 通过变量创建数组
Nov 15 PHP
php empty 函数判断结果为空但实际值却为非空的原因解析
May 28 PHP
PHP实现简易图形计算器
Aug 28 PHP
PHP如何获取Cookie并实现模拟登录
Jul 16 #PHP
PHP使用Http Post请求发送Json对象数据代码解析
Jul 16 #PHP
PHP字符串和十六进制如何实现互相转换
Jul 16 #PHP
PHP xpath提取网页数据内容代码解析
Jul 16 #PHP
浅析PHP中json_encode与json_decode的区别
Jul 15 #PHP
PHP vsprintf()函数格式化字符串操作原理解析
Jul 14 #PHP
PHP number_format函数原理及实例解析
Jul 14 #PHP
You might like
php5.3中连接sqlserver2000的两种方法(com与ODBC)
2012/12/29 PHP
imgAreaSelect 中文文档帮助说明
2011/10/08 Javascript
JS编程小常识很有用
2012/11/26 Javascript
如何让你的Lightbox支持滚轮缩放及Base64图片
2014/12/04 Javascript
jQuery的context属性用法实例
2014/12/27 Javascript
简介JavaScript中Boolean.toSource()方法的使用
2015/06/05 Javascript
初识Javascript小结
2015/07/16 Javascript
JS实现自动变化的导航菜单效果代码
2015/09/09 Javascript
jQuery技巧之让任何组件都支持类似DOM的事件管理
2016/04/05 Javascript
Javascript闭包与函数柯里化浅析
2016/06/22 Javascript
jQuery Raty 一款不错的星级评分插件
2016/08/24 Javascript
jQuery弹出层后禁用底部滚动条(移动端关闭回到原位置)
2016/08/29 Javascript
JavaScript遍历Json串浏览器输出的结果不统一问题
2016/11/03 Javascript
JS实现根据用户输入分钟进行倒计时功能
2016/11/14 Javascript
js滚轮事件兼容性问题需要注意哪些
2016/11/15 Javascript
根据输入邮箱号跳转到相应登录地址的解决方法
2016/12/13 Javascript
bootstrap输入框组件使用方法详解
2017/01/19 Javascript
JavaScript实现焦点进入文本框内关闭输入法的核心代码
2017/09/20 Javascript
vue中keep-alive的用法及问题描述
2018/05/15 Javascript
AngularJS实现与后台服务器进行交互的示例讲解
2018/08/13 Javascript
JavaScript实现shuffle数组洗牌操作示例
2019/01/03 Javascript
js实现的格式化数字和金额功能简单示例
2019/07/30 Javascript
JS中async/await实现异步调用的方法
2019/08/28 Javascript
Vue 嵌套路由使用总结(推荐)
2020/01/13 Javascript
vue 中使用print.js导出pdf操作
2020/11/13 Javascript
简单解决Python文件中文编码问题
2015/11/22 Python
Python日期时间模块datetime详解与Python 日期时间的比较,计算实例代码
2018/09/14 Python
解决pandas .to_excel不覆盖已有sheet的问题
2018/12/10 Python
很酷的python表白工具 你喜欢我吗
2019/04/11 Python
python函数的万能参数传参详解
2019/07/26 Python
Win10下python 2.7与python 3.7双环境安装教程图解
2019/10/12 Python
Python 限定函数参数的类型及默认值方式
2019/12/24 Python
全网最细 Python 格式化输出用法讲解(推荐)
2021/01/18 Python
日本小田急百货官网:Odakyu
2018/07/19 全球购物
学习焦裕禄先进事迹心得体会
2016/01/23 职场文书
拙作再改《我的收音机情缘》
2022/04/05 无线电