修复升级bug

This commit is contained in:
pllx
2026-04-29 10:52:44 +08:00
parent 82d762d070
commit e0679b164e
+20 -12
View File
@@ -90,17 +90,26 @@ php artisan horizon:terminate
# 7. 重启 Reverb,确保长驻 WebSocket 进程加载最新代码和配置
echo -e "${YELLOW}[7/8] 重启 Reverb...${NC}"
REVERB_RESTARTED=0
REVERB_CAN_AUTO_RESTART=0
SUPERVISOR_REVERB_TARGETS=""
# Laravel 官方推荐:部署后使用 reverb:restart 优雅重启长驻进程
php artisan reverb:restart >/dev/null 2>&1
if [ $? -eq 0 ]; then
REVERB_RESTARTED=1
echo -e "${GREEN}✅ 已执行 php artisan reverb:restart。${NC}"
fi
# 若线上通过 Supervisor 托管 reverb:start,继续尝试重启常见进程名
# 先探测是否存在可自动拉起 Reverb 的进程管理器,避免在纯手工启动场景下执行 reverb:restart 后把聊天室停掉。
if command -v supervisorctl >/dev/null 2>&1; then
SUPERVISOR_REVERB_TARGETS=$(supervisorctl status 2>/dev/null | awk '/reverb|broadcast|websocket/ {print $1}')
if [ -n "$SUPERVISOR_REVERB_TARGETS" ]; then
REVERB_CAN_AUTO_RESTART=1
fi
fi
# Laravel 官方文档说明:reverb:restart 适合在 Supervisor 等进程管理器托管下使用。
if [ "$REVERB_CAN_AUTO_RESTART" -eq 1 ]; then
php artisan reverb:restart >/dev/null 2>&1
if [ $? -eq 0 ]; then
REVERB_RESTARTED=1
echo -e "${GREEN}✅ 已执行 php artisan reverb:restart。${NC}"
fi
# 若线上通过 Supervisor 托管 reverb:start,再补一次显式 restart,尽量确保进程被拉起。
if [ -n "$SUPERVISOR_REVERB_TARGETS" ]; then
while IFS= read -r target; do
if [ -n "$target" ]; then
@@ -110,10 +119,9 @@ if command -v supervisorctl >/dev/null 2>&1; then
done <<< "$SUPERVISOR_REVERB_TARGETS"
echo -e "${GREEN}✅ 已尝试重启 Supervisor 托管的 Reverb 相关进程。${NC}"
fi
fi
if [ "$REVERB_RESTARTED" -eq 0 ]; then
echo -e "${YELLOW}⚠️ 未检测到可自动重启的 Reverb 进程,请手动确认 reverb:start / Supervisor 状态。${NC}"
else
echo -e "${YELLOW}⚠️ 未检测到 Reverb 进程管理器,已跳过 reverb:restart,避免把手工启动的聊天室长连接服务停掉。${NC}"
echo -e "${YELLOW}⚠️ 若当前服务器是手工执行 php artisan reverb:start,请在部署完成后手动重启该进程。${NC}"
fi
# 8. 重载 PHP-FPM / opcache,避免 Web 进程继续使用旧的 autoload 缓存