## 守护程序
守护程序实际上就是个一直在持续执行的控制台程序,正常情况下,代码执行完该进程就会结束,而守护进程就是使用一个循环使该进程一直处于工作状态,PHP 在 CLI 下启动的程序,默认是单进程单线程的,MixPHP 可以实现多进程编程,请查看“多进程”章节。
## 使用场景
**单进程:**
如:WebSocket 的广播推送服务等。
**多进程:**
如:消息队列(MQ)消费处理,消息推送,数据采集等。
## 开发目录
~~~txt
apps/
├── daemon
~~~
## 命令执行
~~~
mix-daemon [入口文件] [命令] [选项]
~~~
## 范例代码
[>> 到 GitHub 查看 DEMO <<](https://github.com/mix-php/mix/blob/v1/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>
~~~
- 欢迎使用 MixPHP
- 安装说明
- 常规安装
- 只安装命令行
- Apache/PHP-FPM安装
- 开发与调试
- 开发注意事项
- 调试与错误
- 基础架构
- 目录结构
- 目录设计
- URL访问
- 命名空间
- 自动加载
- 入口文件
- 框架核心
- Application
- 配置
- 对象
- 组件
- 门面
- 系统服务
- 中间件
- 验证器
- 验证器定义
- 验证规则
- 静态调用
- 模型
- 日志
- 命令行
- 简介
- 命令行开发常识
- 创建命令
- 执行与选项
- 控制台程序
- 守护程序
- HTTP 服务
- 简介
- 服务器
- 路由
- 请求
- 响应
- 控制器
- 视图
- Token
- Session
- Cookie
- 文件上传
- 图片处理
- 分页
- 验证码
- WebSocket 服务
- 简介
- 回调函数
- 消息处理器
- 客户端测试
- nginx代理
- 60s无消息断线
- 多进程
- ProcessPoolTaskExecutor
- 流水线模式
- 推送模式
- 在 Supervisor 中使用
- 协程
- 简介
- 如何开启协程
- HTTP 协程开发
- 命令行协程开发
- 客户端
- MySQL
- PDO
- PDOPersistent
- PDOMasterSlave
- PDOCoroutine
- Redis
- Redis
- RedisPersistent
- RedisCoroutine
- 外部工具库
- 简介
- think-orm
- psr-log
- 安全建议
- 常见问题
- 启动多个 HTTP 服务器
- 连接多个数据库
- 如何设置跨域
- mix-httpd service stop 无效
- No such file or directory
- 错误级别配置不生效
- 推进计划
- 文档历史