This commit is contained in:
2026-06-28 17:06:12 +08:00
parent ece31c2830
commit 94111ccba6
20 changed files with 2789 additions and 0 deletions
+54
View File
@@ -0,0 +1,54 @@
<?php
/**
* kiri-crontab 默认配置
* 可通过环境变量或应用配置覆盖
*/
return [
// Redis 连接配置
'redis' => [
'host' => env('CRONTAB_REDIS_HOST', '127.0.0.1'),
'port' => (int)env('CRONTAB_REDIS_PORT', 6379),
'auth' => env('CRONTAB_REDIS_AUTH', ''),
'prefix' => env('CRONTAB_REDIS_PREFIX', ''),
'databases' => (int)env('CRONTAB_REDIS_DB', 0),
'timeout' => (int)env('CRONTAB_REDIS_TIMEOUT', 30),
],
// 调度器配置
'scheduler' => [
// 调度器 tick 间隔 (秒)
'tick_interval' => (int)env('CRONTAB_TICK_INTERVAL', 1),
// 任务执行超时时间 (秒)
'task_timeout' => (int)env('CRONTAB_TASK_TIMEOUT', 300),
// 主锁 TTL (秒)
'lock_ttl' => (int)env('CRONTAB_LOCK_TTL', 60),
// 主锁续期间隔 (秒)
'lock_renew_interval' => (int)env('CRONTAB_LOCK_RENEW_INTERVAL', 15),
// 是否启用协程并发执行多个到期任务
'concurrent_tasks' => (bool)env('CRONTAB_CONCURRENT', true),
// 并发任务最大数量
'max_concurrent' => (int)env('CRONTAB_MAX_CONCURRENT', 10),
// PID 文件路径 (独立模式)
'pid_file' => env('CRONTAB_PID_FILE', ''),
// 日志文件路径 (独立模式)
'log_file' => env('CRONTAB_LOG_FILE', ''),
],
// 注册的任务列表 (配置模式,expression 字符串格式)
// 注解模式通过 #[Crontab] 在 handle() 方法上声明,kiri-core Scanner 自动发现
// 表达式: every:60 | every:5m | every:1h | daily:03:00 | hourly:30 | cron:*\/5 * * * * | at:时间戳
// 每个任务需实现 TaskInterface 接口
'tasks' => [
// 示例:
// [
// 'class' => App\Task\CleanLogTask::class,
// 'name' => '清理日志',
// 'expression' => 'daily:03:00', // 每天 03:00
// ],
// [
// 'class' => App\Task\HeartbeatTask::class,
// 'name' => '心跳检测',
// 'expression' => 'every:60', // 每 60 秒
// ],
],
];