zhengqi/swoole-crontab 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

zhengqi/swoole-crontab

最新稳定版本:1.0.3

Composer 安装命令:

composer require zhengqi/swoole-crontab

包简介

基于swoole的crontab定时任务

README 文档

README

1. 创建任务类,实现接口 SchedulerInterface。例,

<?php

namespace app\scheduler;

use crontab\SchedulerInterface;

/**
 * 定时任务心跳检测
 */
class SchedulerHeartbeat implements SchedulerInterface
{
    /**
     * crontab 日期表达式。如果不想存在其他地方,可以直接写在这里
     */
    private string $defaultCrontabRule = "*/5 * * * * *";

    public function run(): void
    {
        echo 'scheduler heartbeat running. date = ' . date('Y-m-d H:i:s') . PHP_EOL;
    }

    public function getCronRule(): string
    {
        return $this->defaultCrontabRule;
    }

}

2. 创建任务列表,方便后面注册任务。可以写到框架的配置中

$taskArray = [
    'scheduler_heartbeat' => SchedulerHeartbeat::class,
    'redis_heartbeat' => RedisHeartbeat::class,
];

3. 启动。需要实现了 PSR-3 标准的日志库。一般框架中都有,没有的话可以用 monolog

// 启动
$schedulerHelper = new SchedulerHelper();
$schedulerHelper->run();

// 写了个助手类,参考下
// ThinkPHP框架中,可以使用 app()->log
<?php

namespace crontab;

class SchedulerHelper
{
    private Scheduler $scheduler;

    private SchedulerRegistrar $schedulerRegistrar;

    private array $schedulers = [];

    public function __construct()
    {
        $this->schedulerRegistrar = new SchedulerRegistrar(app()->log);
        $this->schedulers = []; // 获取你的任务列表
    }

    public function run($daemon = false): void
    {
        $this->addTasks();
        $this->scheduler = new Scheduler($this->schedulerRegistrar, app()->log);
        $this->scheduler->start($daemon);
    }

    private function addTasks(): void
    {
        foreach ($this->schedulers as $taskName => $taskClass) {
            if (class_exists($taskClass)) {
                echo 'class exists: ' . $taskClass . PHP_EOL;
                $task = new $taskClass();
                $this->schedulerRegistrar->addTask($task, $taskName);
            }
        }
    }
}

统计信息

  • 总下载量: 5
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-03-07