## 守护程序 守护程序实际上就是个一直在持续执行的控制台程序,正常情况下,代码执行完该进程就会结束,而守护进程就是使用一个循环使该进程一直处于工作状态,PHP 在 CLI 下启动的程序,默认是单进程单线程的,MixPHP 可以实现多进程编程,请查看“多进程”章节。 ## 使用场景 **单进程:** 如:WebSocket 的广播推送服务等。 **多进程:** 如:消息队列(MQ)消费处理,消息推送,数据采集等。 ## 开发目录 ~~~txt apps/ ├── daemon ~~~ ## 命令执行 ~~~ mix-daemon [入口文件] [命令] [选项] ~~~ ## 范例代码 [>> 到 GitHub 查看 DEMO <<](https://github.com/mixstart/mixphp/blob/master/apps/daemon/commands/SingleCommand.php) 同步单进程守护程序,其实都是通过一个循环让代码一直保持执行状态,从而达到守护执行的目的,通常由于一些未知异常,会导致程序报错而引起守护程序退出,DEMO 中 `startWork` 方法实现了捕获错误、重建执行流程,能让该程序在任何错误下仍可以继续执行,达到守护的目的。 ## 命令管理 在命令行使用以下命令管理: ~~~shell // 查看帮助 mix-daemon -h // 启动 mix-daemon single start // 启动(守护) mix-daemon single start -d // 停止 mix-daemon single stop // 重启 mix-daemon single restart // 状态 mix-daemon single status ~~~ 也可使用如下 Linux 命令手动管理进程。 ~~~shell // 查找进程 ps -ef | grep mix-daemon // 结束进程 kill <PID> ~~~