ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
> 传统方式是使用Linux的crontab来实现,但并不是所有开发人员都拥有服务器权限去设置定时任务,这里 hyperf/crontab 组件为您提供了一个 秒级 定时任务功能,简单定义即可实现定时任务。 [TOC] ## 安装 ~~~ composer require hyperf/crontab ~~~ ## 启动任务调度器进程 > 1. 配置 /config/autoload/processes.php ~~~ return [ Hyperf\Crontab\Process\CrontabDispatcherProcess::class, ]; ~~~ > 2. 配置 /config/autoload/crontab.php ~~~ return [ // 是否开启定时任务 'enable' => true, ]; ~~~ ## 定义定时任务 (注解方式) > rule属性: > * 定时任务的执行规则,在分钟级的定义时,与 Linux 的 crontab 命令的规则一致 > * 在秒级的定义时,规则长度从 5 位变成 6 位,在规则的前面增加了对应秒级的节点,也就是 5 位时以分钟级规则执行,6 位时以秒级规则执行,如 ``*/5 * * * * *`` 则代表每 5 秒执行一次。注意在注解定义时,规则存在 \ 符号时,需要进行转义处理,即填写 `*\/5 * * * * *`。 ~~~ namespace App\Task; use Hyperf\Contract\StdoutLoggerInterface; use Hyperf\Crontab\Annotation\Crontab; use Hyperf\Di\Annotation\Inject; /** * @Crontab(name="Foo_随便定义", rule="* * * * *", callback="execute", memo="这是一个示例的定时任务") */ class FooTask { /** * @Inject() * @var \Hyperf\Contract\StdoutLoggerInterface */ private $logger; public function execute() { $this->logger->info(date('Y-m-d H:i:s', time())); } } ~~~