Swoole服务可通过设置daemonize=1实现守护进程运行,确保后台持续执行不受终端影响。
Swoole 服务可以通过配置使其以守护进程(daemon)方式运行,这样服务会在后台持续运行,不受终端会话影响。实现方式非常简单,只需在创建 Swoole 服务器时设置相关参数即可。
启用守护进程模式
在实例化 SwooleServer 时,通过设置 daemonize 配置项为 1,可以让服务以守护进程方式运行。
- daemonize = 1:启用守护进程模式
- daemonize = 0:默认值,前台运行
示例代码:
php
$server = new SwooleServer(“0.0.0.0”, 9501);
$server->set([
‘daemonize’ => 1,
‘worker_num’ => 4,
‘log_file’ => ‘/tmp/swoole.log’
]);
$server->on(‘receive’, function ($server, $fd, $reactorId, $data) {
$server->send($fd, “Swoole: ” . $data);
});
$server->start();
关键配置说明
为了确保守护进程稳定运行,还需配合以下配置:
- log_file:必须设置日志文件路径,因为守护进程无法输出到终端
- pid_file:建议指定 PID 文件路径,便于后续管理(启动、停止、重启)
增强版配置示例:
‘daemonize’ => 1,
‘pid_file’ => ‘/tmp/swoole.pid’,
‘log_file’ => ‘/tmp/swoole.log’,
‘log_level’ => 0,
进程管理建议
以守护进程运行后,需通过脚本或命令管理服务生命周期。
常用操作:
- 启动:php server.php(确保代码中已设置 daemonize=1)
- 停止:kill $(cat /tmp/swoole.pid)
- 重启:先 stop 再 start
可编写简单的 shell 脚本封装这些操作,提升运维效率。
基本上就这些。只要正确设置 daemonize 和日志、PID 文件路径,Swoole 服务就能稳定地以后台守护进程方式运行。不复杂但容易忽略细节。