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 相关文章推荐
安装APACHE
Jan 15 PHP
PHP缩略图等比例无损压缩,可填充空白区域补充色
Jun 10 PHP
PHP中操作ini配置文件的方法
Apr 25 PHP
php-perl哈希算法实现(times33哈希算法)
Dec 30 PHP
PHP基于php_imagick_st-Q8.dll实现JPG合成GIF图片的方法
Jul 11 PHP
destoon调用企业会员公司形象图片的实现方法
Aug 21 PHP
php自动识别文字编码并转换为目标编码的方法
Aug 08 PHP
WordPress开发中自定义菜单的相关PHP函数使用简介
Jan 05 PHP
PHP二维数组排序简单实现方法
Feb 14 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
Sep 16 PHP
PHP实现微信申请退款功能
Oct 01 PHP
php操作redis命令及代码实例大全
Nov 19 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
PHP的array_diff()函数在处理大数组时的效率问题
2011/11/27 PHP
解析zend Framework如何自动加载类
2013/06/28 PHP
php实现阿拉伯数字和罗马数字相互转换的方法
2015/04/17 PHP
PHP+AJAX实现投票功能的方法
2015/09/28 PHP
PHP十六进制颜色随机生成器功能示例
2017/07/24 PHP
JavaScript判断两种格式的输入日期的正确性的代码
2007/03/25 Javascript
IE iframe的onload方法分析小结
2010/01/07 Javascript
基于javascipt-dom编程 table对象的使用
2013/04/22 Javascript
javascript ajax 仿百度分页函数
2013/10/29 Javascript
把jQuery的类、插件封装成seajs的模块的方法
2014/03/12 Javascript
Javascript学习指南
2014/12/01 Javascript
JavaScript生成二维码图片小结
2015/12/27 Javascript
Angular+Bootstrap+Spring Boot实现分页功能实例代码
2017/07/21 Javascript
详解使用create-react-app快速构建React开发环境
2018/05/16 Javascript
vue从一个页面跳转到另一个页面并携带参数的解决方法
2019/08/12 Javascript
javascript操作元素的常见方法小结
2019/11/13 Javascript
基于JavaScript实现猜数字游戏代码实例
2020/07/30 Javascript
JavaScript 事件代理需要注意的地方
2020/09/08 Javascript
jQuery实现简单弹幕制作
2020/12/10 jQuery
Python中处理unchecked未捕获异常实例
2015/01/17 Python
深入讨论Python函数的参数的默认值所引发的问题的原因
2015/03/30 Python
初学Python函数的笔记整理
2015/04/07 Python
Python OpenCV读取png图像转成jpg图像存储的方法
2018/10/28 Python
Python使用正则实现计算字符串算式
2019/12/29 Python
对Pytorch中Tensor的各种池化操作解析
2020/01/03 Python
python 实现简易的记事本
2020/11/30 Python
实例教程 利用html5和css3打造一款创意404页面
2014/10/20 HTML / CSS
ZWILLING双立人英国网上商店:德国刀具锅具厨具品牌
2018/05/15 全球购物
西班牙语在线票务市场:SuperBoletería
2019/06/10 全球购物
德国高尔夫商店:Par71.de
2020/11/29 全球购物
自愿解除劳动合同协议书
2014/09/11 职场文书
工作失职检讨书
2015/01/26 职场文书
2015年税务稽查工作总结
2015/05/26 职场文书
紧急迫降观后感
2015/06/15 职场文书
在JavaScript中如何使用宏详解
2021/05/06 Javascript
Oracle 触发器trigger使用案例
2022/02/24 Oracle