2025-07-16 告别手动重启!用Supervisor优雅管理PHP后台进程 告别手动重启!用Supervisor优雅管理PHP后台进程 为什么需要Supervisor?最近在部署一个PHP邮件队列系统时,我遇到了典型的长时运行进程管理难题:进程莫名崩溃需要人工介入、服务器重启后需手动恢复服务、多个worker进程难以统一管理...直到发现了Supervisor这个神器,才真正体会到什么叫做"set it and forget it"的运维体验。一、Supervisor核心优势 进程守护:自动重启异常退出的子进程 集中管理:统一启停/监控多个后台进程 日志集成:所有子进程日志集中处理 开机自启:系统重启后自动恢复服务 Web可视化:通过web界面实时监控(可选) 二、实战安装配置1. 基础环境准备(以Ubuntu为例)bash sudo apt update sudo apt install -y supervisor sudo systemctl enable supervisor # 设置开机自启2. 专用配置文件创建每个PHP项目建议单独配置,在/etc/supervisor/conf.d/下新建配置: ini [program:php-worker] command=php /path/to/your/w... 2025年07月16日 11 阅读 0 评论
2025-06-06 .NET8强大功能:IHostedService与BackgroundService实战教程 .NET8强大功能:IHostedService与BackgroundService实战教程 一、基础概念理解IHostedServiceIHostedService 是一个接口,定义了 StartAsync、StopAsync 和 DisposeAsync 三个方法,用于管理后台服务的生命周期。任何实现了 IHostedService 的类都可以作为后台服务在应用程序中运行。BackgroundServiceBackgroundService 是 IHostedService 的一个实现,提供了启动、停止和异常处理的默认实现,简化了 IHostedService 的实现。通常,当你需要一个简单的后台服务时,直接继承 BackgroundService 是一个不错的选择。二、创建自定义的 BackgroundService 定义服务类:首先,我们创建一个继承自 BackgroundService 的类 MyBackgroundService。在这个类中,我们将实现实际的业务逻辑。 csharp public class MyBackgroundService : BackgroundService { protected override async Task Ex... 2025年06月06日 34 阅读 0 评论