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无限极分类递归排序实现方法

    php无限极分类递归排序实现方法

    这篇文章主要介绍了php无限极分类递归排序实现方法,通过一个简单的递归函数实现无限递归分类排序,是非常实用的技巧,需要的朋友可以参考下
    2014-11-11
  • PHP图片处理之使用imagecopyresampled函数裁剪图片例子

    PHP图片处理之使用imagecopyresampled函数裁剪图片例子

    这篇文章主要介绍了PHP图片处理之使用imagecopyresampled函数裁剪图片例子,本文例子相对简单,是一篇入门级的学习总结,需要的朋友可以参考下
    2014-11-11
  • PHP中file_get_contents高級用法实例

    PHP中file_get_contents高級用法实例

    这篇文章主要介绍了PHP中file_get_contents高級用法,包括了超时限制及实现POST等用法,需要的朋友可以参考下
    2014-09-09
  • 关于PHP中Object对象的笔记分享

    关于PHP中Object对象的笔记分享

    关于PHP中Object对象的笔记分享,学习php面向对象的朋友可以参考下。
    2011-06-06
  • PHP错误提示的关闭方法详解

    PHP错误提示的关闭方法详解

    关闭PHP错误脚本提示是程序上线了必须做的一件事情,就是不管程序怎么报错我们都不能让错误日志在服务器上给大家看到,下面我来总结两种关闭PHP错误脚本提示的具体方法
    2013-06-06
  • 常用的PHP加密解密函数分享

    常用的PHP加密解密函数分享

    项目中有时我们需要使用PHP将特定的信息进行加密,也就是通过加密算法生成一个加密字符串,这个加密后的字符串可以通过解密算法进行解密,本文给大家分享了一些比较经典的PHP加密解密函数代码,需要的朋友可以参考下
    2023-09-09
  • ThinkPHP发送邮件示例代码

    ThinkPHP发送邮件示例代码

    这篇文章主要为大家详细介绍了ThinkPHP发送邮件示例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • PHP+Ajax 检测网络是否正常实例详解

    PHP+Ajax 检测网络是否正常实例详解

    这篇文章主要介绍了PHP+Ajax 检测网络是否正常实例详解的相关资料,这里附有实例代码,需要的朋友可以参考下
    2016-12-12
  • PHP实现的日历功能示例

    PHP实现的日历功能示例

    这篇文章主要介绍了PHP实现的日历功能,涉及php针对日期时间的简单运算与输出显示相关操作技巧,需要的朋友可以参考下
    2018-09-09
  • Linux fgetcsv取得的数组元素为空字符串的解决方法

    Linux fgetcsv取得的数组元素为空字符串的解决方法

    使用CSV导入数据的时候,我们通常用的是Windows系统,使用GBK在Windows的Excel中编辑
    2011-11-11

最新评论