EasySwoole

基础管理命令

EasySwoole 的项目命令入口是根目录下的 easyswoole.php。

守护模式的路径提醒: server start -d 会让 Swoole 以守护进程运行,进程的当前工作目录可能变化。-d 不会自动执行 chroot;chroot 是另一个独立的 Swoole 配置。业务代码不要依赖 getcwd() 或 ./Storage 这样的相对路径:项目文件以 EASYSWOOLE_ROOT 为基准,运行时临时文件以 EASYSWOOLE_TEMP_DIR 为基准。框架没有 EASYSWOOLE_TMP_DIR 这个常量。

服务管理

# 前台启动,适合本地调试
php easyswoole.php server start

# 守护进程启动
php easyswoole.php server start -d

# 使用生产配置启动
php easyswoole.php server start -d --mode=produce

# 平滑重载 Worker
php easyswoole.php server reload

# 查看服务状态
php easyswoole.php server status

# 停止服务
php easyswoole.php server stop

# 强制停止
php easyswoole.php server stop --force

reload 向主进程发送 SIGUSR1,主要用于更新 Worker 中加载的业务代码。主进程级配置、监听端口和部分启动期资源发生变化时,应完整重启服务。

例如,在控制器或任务中读写项目文件与临时文件:

$configFile = EASYSWOOLE_ROOT . '/Config/business.php';
$cacheFile = EASYSWOOLE_TEMP_DIR . '/business-cache.json';

不要写成 file_get_contents('./Config/business.php') 或 file_put_contents('Temp/business-cache.json', $data)。EASYSWOOLE_TEMP_DIR 在框架加载配置并初始化临时目录后定义,可在事件、控制器、任务等运行阶段使用;编写根目录的 dev.php、produce.php 时,应改用 EASYSWOOLE_ROOT . '/Temp' 指定路径。更多说明见开发者必读:文件路径。

运行模式

--mode=dev 加载 dev.php,--mode=produce 加载 produce.php。PID 文件默认位于:

Temp/dev.pid
Temp/produce.pid

日志文件也会按运行模式区分。停止命令依赖 PID 文件,因此前台进程异常退出后可能需要检查残留 PID。

查看帮助

php easyswoole.php
php easyswoole.php server

框架还注册了 install、process、task 和 crontab 等命令。服务、进程、异步任务和 Crontab 的完整管理方法参见管理命令。具体可用 Action 和 Option 应以当前命令输出为准。

组件进程重载

常驻组件进程有各自的重载入口:

# 重载 easyswoole/task 的 Task Worker
php easyswoole.php task reload --mode=produce

# 重载 Crontab Scheduler 和 Worker
php easyswoole.php crontab reload --mode=produce

# 重启指定的普通自定义进程
php easyswoole.php process kill --mode=produce --pid=12345

crontab reload 默认发送 SIGTERM,并同时重建当前实例的全部 Crontab 进程。它支持 --force,但没有滚动重载参数。Job 注册结构发生变化时仍需完整重启;具体边界参见热重启。

部署注意

  • 不要并行启动两套使用相同端口和 PID 文件的实例。
  • 守护模式下业务文件使用上述绝对路径常量;框架默认临时目录和日志目录也以项目根目录为基准。自定义 TEMP_DIR、LOG.dir、PID、Swoole 日志路径时同样应写绝对路径。
  • 发布脚本应先检查 server stop/reload 的退出结果,而不是只判断命令是否执行。

源码依据