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

 更新时间:2020年07月16日 15:22:36   作者:网络虫  
这篇文章主要介绍了PHP程序守护进程化实现方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

一般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数组函数array_key_exists()小结

    php数组函数array_key_exists()小结

    本文给大家汇总介绍了php数组函数array_key_exists()的相关知识以及与in_array的性能对比,与isset的区别分析,非常的详细,有需要的小伙伴可以参考下。
    2015-12-12
  • php根据指定位置和长度获得子字符串的方法

    php根据指定位置和长度获得子字符串的方法

    这篇文章主要介绍了php根据指定位置和长度获得子字符串的方法,涉及php中substr函数的使用技巧,需要的朋友可以参考下
    2015-03-03
  • PHP 实现多服务器共享 SESSION 数据

    PHP 实现多服务器共享 SESSION 数据

    稍大一些的网站,通常都会有好几个服务器,每个服务器运行着不同功能的模块,使用不同的二级域名,而一个整体性强的网站,用户系统是统一的,即一套用户名、密码在整个网站的各个模块中都是可以登录使用的。
    2009-08-08
  • PHP调用外部程序的方法解析

    PHP调用外部程序的方法解析

    这篇文章主要介绍了PHP调用外部程序的方法解析,对此感兴趣的同学,可以多研究一下
    2021-04-04
  • header与缓冲区之间的深层次分析

    header与缓冲区之间的深层次分析

    实际的开发中,大家是否听说过在header之前不能有任何的实际输出。甚至有的认为header函数必须写在代码的最前面。可是你是否试验过header函数之前输出东西?下来让我们更深层次的了解一下
    2016-07-07
  • WampServer下安装多个版本的PHP、mysql、apache图文教程

    WampServer下安装多个版本的PHP、mysql、apache图文教程

    这篇文章主要介绍了WampServer下安装多个版本的PHP、mysql、apache图文教程,需要的朋友可以参考下
    2015-01-01
  • 利用php下载xls文件(自己动手写的)

    利用php下载xls文件(自己动手写的)

    如何利用php实现下载xls文件。根据ECSHOP的源码,自己动手实现了一下,下面将成功实现的实例与大家分享下
    2014-04-04
  • PHP数据库编程之MySQL优化策略概述

    PHP数据库编程之MySQL优化策略概述

    这篇文章主要介绍了PHP数据库编程之MySQL优化策略,简单讲述了mysql优化的简单技巧以及索引优化、查询优化、存储优化等相关操作技巧,需要的朋友可以参考下
    2017-08-08
  • PHP编程过程中需要了解的this,self,parent的区别

    PHP编程过程中需要了解的this,self,parent的区别

    this是指向对象实例的一个指针,在实例化的时候来确定指向;self是对类本身的一个引用,一般用来指向类中的静态变量;parent是对父类的引用,一般使用parent来调用父类的构造函数。
    2009-12-12
  • php mysqli查询语句返回值类型实例分析

    php mysqli查询语句返回值类型实例分析

    这篇文章主要介绍了php mysqli查询语句返回值类型,结合实例形式分析了php+mysqli常用的查询、插入语句的使用与返回值类型,需要的朋友可以参考下
    2016-06-06

最新评论