You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

长时间运行的PHP CLI作业存活探针实现方案咨询

如何在无额外依赖下监控PHP批量处理脚本的存活状态(Docker/Kubernetes环境)

针对无服务暴露的PHP命令行批量脚本,可通过进程检测、心跳文件验证、日志内容校验三种核心方式实现监控,无需引入额外库或特性,适配Docker及Kubernetes环境:

Docker环境方案

1. 进程存在性健康检查

在Dockerfile中添加HEALTHCHECK指令,直接检测脚本进程是否存活:

HEALTHCHECK --interval=30s --timeout=5s --start-period=60s \
  CMD ps aux | grep [y]our_batch_script.php || exit 1
  • [y]的作用是避免grep自身被误匹配为目标进程
  • start-period需根据脚本启动耗时调整,避免初始化阶段误判

2. 心跳文件健康检查

让脚本定期更新心跳文件,通过检查文件新鲜度判断脚本是否正常运行(比单纯进程检测更能识别僵死进程):

  1. 在PHP脚本中添加心跳逻辑:
// 每隔30秒更新心跳文件
while (true) {
    // 脚本核心处理逻辑...
    file_put_contents('/tmp/script_heartbeat', time());
    sleep(30);
}
  1. 在Dockerfile中配置健康检查:
HEALTHCHECK --interval=30s --timeout=5s --start-period=60s \
  CMD test $(($(date +%s) - $(stat -c %Y /tmp/script_heartbeat))) -lt 300 || exit 1
  • 上述命令判断心跳文件是否在5分钟(300秒)内更新过,超时则判定异常

Kubernetes环境方案

利用Kubernetes的livenessProbe(存活探针)实现自动重启异常Pod,同样基于exec类型探针,无需HTTP/TCP端口:

1. 进程存活探针

在Deployment的Pod模板中配置:

livenessProbe:
  exec:
    command:
    - pgrep
    - -f
    - your_batch_script.php
  initialDelaySeconds: 60
  periodSeconds: 30
  failureThreshold: 2
  • pgrep -f会匹配包含脚本名的进程,返回0则正常,非0则触发Pod重启
  • failureThreshold设置连续2次检测失败后重启

2. 心跳文件探针

结合脚本的心跳逻辑,配置探针检查文件新鲜度:

livenessProbe:
  exec:
    command:
    - sh
    - -c
    - "test $(($(date +%s) - $(stat -c %Y /tmp/script_heartbeat))) -lt 300"
  initialDelaySeconds: 60
  periodSeconds: 30
  failureThreshold: 2

3. 日志内容探针

如果脚本会定期输出正常运行的标识(如"Batch processed successfully"),可通过检查日志判断业务状态:

livenessProbe:
  exec:
    command:
    - sh
    - -c
    - "tail -n 100 /var/log/batch_script.log | grep -q 'Batch processed successfully'"
  initialDelaySeconds: 60
  periodSeconds: 60
  failureThreshold: 2

通用注意事项

  • 心跳间隔和检测阈值需根据脚本的处理周期调整,避免误判
  • 脚本需确保日志/心跳文件写入权限正常,避免因权限问题导致监控失效
  • Kubernetes环境中,若脚本运行时间较长(超过Pod的terminationGracePeriodSeconds),需调整该参数避免强制杀死进程

内容的提问来源于stack exchange,提问作者Jindra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 22:06:22