摘要:调用此函数,就可使当前进程脱离终端变成一个守护进程,具体内容参见。命令行程序实现守护进程化有种方法一使用这里就实现了守护进程化。多带带执行,当按下时就会中断程序执行,会当前进程以及子进程。
一般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! "); } elseif ($pid > 0) { //让由用户启动的进程退出 exit(0); } //建立一个有别于终端的新session以脱离终端 posix_setsid(); $pid = pcntl_fork(); if ($pid == -1) { die("fork(2) failed! "); } elseif ($pid > 0) { //父进程退出, 剩下子进程成为最终的独立进程 exit(0); } } daemonize(); sleep(1000);
用上面代码即可实现守护进程化,当你的PHP程序需要转为后台运行时,只需要调用一次封装好的函数daemonize()即可。
注:这里没有实现标准输入输出的重定向。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/31921.html
摘要:做了一次分享,主题使用搭建开发环境,简单介绍了一下的概念,演示了使用构建全套环境。应场景通常于如下场景应的动化打包和发布动化测试和持续集成发布在服务型环境中部署和调整数据库或其他的后台应从头编译或者扩展现有的或平台来搭建的环境。 做了一次分享,主题《使用 Docker 搭建开发环境》,简单介绍了一下 Docker 的概念,演示了使用 Docker-compose 构建全套 PHP 环境...
摘要:做了一次分享,主题使用搭建开发环境,简单介绍了一下的概念,演示了使用构建全套环境。应场景通常于如下场景应的动化打包和发布动化测试和持续集成发布在服务型环境中部署和调整数据库或其他的后台应从头编译或者扩展现有的或平台来搭建的环境。 做了一次分享,主题《使用 Docker 搭建开发环境》,简单介绍了一下 Docker 的概念,演示了使用 Docker-compose 构建全套 PHP 环境...
摘要:是一个基于扩展实现的轻量级高性能的常驻内存型的和应用服务框架高度封装了,,服务器,以及基于实现可扩展的服务,同时支持包方式安装部署项目。基于实用,抽象事件处理类,实现与底层的回调的解耦,支持同步异步调用,内置等常用组件等。 swoolefy swoolefy是一个基于swoole扩展实现的轻量级高性能的常驻内存型的API和Web应用服务框架,高度封装了http,websocket,ud...
摘要:原文地址音标中文含义为守护神或精灵的意思其实它还有个意思守护进程守护进程简单地说就是可以脱离终端而在后台运行的进程这在中是非常常见的一种进程比如或者等服务启动后就会以守护进程的方式进驻在内存中以为例假如我有个耗时间的任务需要跑在后台将所有 [原文地址:https://blog.ti-node.com/blog...] daemon 音标 : [di:mən] , 中文含义为守护神或精灵...
阅读 871·2021-11-19 11:29
阅读 3363·2021-09-26 10:15
阅读 2874·2021-09-22 10:02
阅读 2446·2021-09-02 15:15
阅读 1982·2019-08-30 15:56
阅读 2424·2019-08-30 15:54
阅读 2929·2019-08-29 16:59
阅读 646·2019-08-29 16:20