• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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进程管理器php-fpm
    • php多进程中的阻塞与非阻塞操作实例分析
    • php多进程并发编程防止出现僵尸进程的方法分析
    • 浅谈PHP进程管理
    • PHP多进程通信-消息队列使用
    • php多进程模拟并发事务产生的问题小结
    • 浅谈并发处理PHP进程间通信之外部介质
    上一篇:PHP如何获取Cookie并实现模拟登录
    下一篇:PHP8.0新功能之Match表达式的使用
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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