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中cURL error 60:SSL certificate problem: unable to
PHP中cURL错误60通常表示SSL证书问题,即无法获取本地颁发机构证书,这通常是由于cURL无法验证远程服务器的SSL证书导致的,本给大家介绍了如何解决php中cURL error 60,需要的朋友可以参考下2023-12-12Linux系统下使用XHProf和XHGui分析PHP运行性能
这篇文章主要介绍了Linux系统下使用XHProf和XHGui分析PHP运行性能的方法,该方案支持Apache与Nginx服务器及多种数据库环境,需要的朋友可以参考下2015-12-12PHP set_error_handler()函数使用详解(示例)
本文详细介绍PHP set_error_handler()函数的使用方法,最后还提供了一个实例2013-11-11用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤
作为一名非专业的PHP开发者,想要较方便地读懂并搞清楚一个PHP功能模块的运行细节,搭建一个PHP调试环境,然后单步调试程序,以掌握程序的整个运行过程显的尤为重要2014-01-01
最新评论