首页后端开发PHPPHP命令行程序实现守护进程化的方法有什么

PHP命令行程序实现守护进程化的方法有什么

时间2024-03-22 17:12:03发布访客分类PHP浏览1047
导读:这篇文章给大家分享的是“PHP命令行程序实现守护进程化的方法有什么”,文中的讲解内容简单清晰,对大家认识和了解都有一定的帮助,对此感兴趣的朋友,接下来就跟随小编一起了解一下“PHP命令行程序实现守护进程化的方法有什么”吧。...
这篇文章给大家分享的是“PHP命令行程序实现守护进程化的方法有什么”,文中的讲解内容简单清晰,对大家认识和了解都有一定的帮助,对此感兴趣的朋友,接下来就跟随小编一起了解一下“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命令行程序实现守护进程化的方法有什么内容,欢迎关注网络资讯频道,小编将为大家输出更多高质量的实用文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: PHP命令行程序实现守护进程化的方法有什么
本文地址: https://pptw.com/jishu/650761.html
PHP怎样滤字符串其他字符,只保留英文和数字 MySQL数据库中字符串转数字有几种方式

游客 回复需填写必要信息