Hyperf单机定时任务核心是安装hyperf/crontab组件、在processes.php注册CrontabDispatcherProcess进程、在crontab.php设enable=>true;支持5段(分钟级)和6段(秒级)cron规则,需防并发可设singleton=true或redis mutex锁。

单机部署 Hyperf 时,配置 Crontab 定时任务的核心在于正确安装组件、启用调度进程、定义规则并确保执行环境稳定。不需要系统 crond,Hyperf 自带的 hyperf/crontab 组件即可完成分钟级甚至秒级调度。
基础配置三步到位
必须完成以下三项,缺一不可:
- 执行
composer require hyperf/crontab安装组件(自动注册,无需手动启用) - 在
config/autoload/processes.php中添加调度进程:Hyperf\Crontab\Process\CrontabDispatcherProcess::class - 在
config/autoload/crontab.php中开启开关:'enable' => true
执行规则写法说明
Crontab 规则支持两种格式,取决于精度需求:
-
标准 5 段 cron 表达式(分钟级):如
"0 2 * * *"表示每天凌晨 2 点执行 -
扩展 6 段表达式(秒级):首段为秒,如
"*/5 * * * * *"表示每 5 秒执行一次
注意:注解中含斜杠需转义,写成"*\/5 * * * * *"
规则解析使用 PHP date() 函数逻辑,受配置中 timezone 影响(建议设为 'Asia/Shanghai')。
单机防并发关键设置
即使单机多 worker 进程,也需防止同一任务被多个进程同时触发:
- 加
singleton = true属性,保证同一时刻仅一个实例运行 - 若任务含 DB 写入、文件操作等敏感逻辑,建议搭配
mutex使用 Redis 锁(需已配置 Redis):'mutex' => ['type' => 'redis'] - 避免在任务类中持有静态变量或未释放资源,否则可能引发内存缓慢增长
验证是否生效
启动服务后检查两项:
- 控制台日志出现
[INFO] Crontab manager started with X tasks - 按规则时间点观察任务输出(如
echo或日志记录),确认频率与预期一致
不复杂但容易忽略细节。


















