Skip to content

Commit e30da77

Browse files
committed
feat(crontab): add crontab tasks for clearing, creating, and executing scheduled tasks
1 parent 2c4ffe1 commit e30da77

File tree

4 files changed

+34
-6
lines changed

4 files changed

+34
-6
lines changed

src/ConfigProvider.php

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,18 @@
77

88
namespace Dtyq\TaskScheduler;
99

10+
use Dtyq\TaskScheduler\Crontab\TaskSchedulerClearCrontab;
11+
use Dtyq\TaskScheduler\Crontab\TaskSchedulerCreateCrontab;
12+
use Dtyq\TaskScheduler\Crontab\TaskSchedulerExecuteCrontab;
13+
use Dtyq\TaskScheduler\Util\Functions;
14+
use Hyperf\Crontab\Crontab;
15+
1016
class ConfigProvider
1117
{
1218
public function __invoke(): array
1319
{
20+
$appEnv = Functions::getEnv();
21+
1422
return [
1523
'dependencies' => [
1624
],
@@ -23,6 +31,32 @@ public function __invoke(): array
2331
],
2432
],
2533
],
34+
'crontab' => [
35+
(new Crontab())
36+
->setName($appEnv . '.TaskSchedulerClearCrontab')
37+
->setRule('0 2 * * *')
38+
->setCallback([TaskSchedulerClearCrontab::class, 'execute'])
39+
->setSingleton(true)
40+
->setMutexExpires(600)
41+
->setOnOneServer(true)
42+
->setMemo('清理超过 n 天的调度数据'),
43+
(new Crontab())
44+
->setName($appEnv . '.TaskSchedulerCreateCrontab')
45+
->setRule('* * * * *')
46+
->setCallback([TaskSchedulerCreateCrontab::class, 'execute'])
47+
->setSingleton(true)
48+
->setMutexExpires(90)
49+
->setOnOneServer(true)
50+
->setMemo('创建未来 n 天的调度数据'),
51+
(new Crontab())
52+
->setName($appEnv . '.TaskSchedulerExecuteCrontab')
53+
->setRule('* * * * *')
54+
->setCallback([TaskSchedulerExecuteCrontab::class, 'execute'])
55+
->setSingleton(true)
56+
->setMutexExpires(90)
57+
->setOnOneServer(true)
58+
->setMemo('执行调度'),
59+
],
2660
'publish' => [
2761
[
2862
'id' => 'config',

src/Crontab/TaskSchedulerClearCrontab.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,11 @@
1313
use Dtyq\TaskScheduler\Entity\Query\TaskSchedulerQuery;
1414
use Dtyq\TaskScheduler\Entity\TaskScheduler;
1515
use Dtyq\TaskScheduler\Service\TaskSchedulerDomainService;
16-
use Hyperf\Crontab\Annotation\Crontab;
1716
use Hyperf\Logger\LoggerFactory;
1817
use Psr\Log\LoggerInterface;
1918

2019
use function Hyperf\Config\config;
2120

22-
#[Crontab(rule: '0 2 * * *', name: 'TaskSchedulerClearCrontab', singleton: true, mutexExpires: 600, onOneServer: true, callback: 'execute', memo: '清理超过 n 天的调度数据')]
2321
class TaskSchedulerClearCrontab
2422
{
2523
private LoggerInterface $logger;

src/Crontab/TaskSchedulerCreateCrontab.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,12 @@
1111
use Dtyq\TaskScheduler\Entity\Query\Page;
1212
use Dtyq\TaskScheduler\Entity\Query\TaskSchedulerCrontabQuery;
1313
use Dtyq\TaskScheduler\Service\TaskSchedulerDomainService;
14-
use Hyperf\Crontab\Annotation\Crontab;
1514
use Hyperf\Logger\LoggerFactory;
1615
use Psr\Log\LoggerInterface;
1716
use Throwable;
1817

1918
use function Hyperf\Config\config;
2019

21-
#[Crontab(rule: '* * * * *', name: 'TaskSchedulerCreateCrontab', singleton: true, mutexExpires: 90, onOneServer: true, callback: 'execute', memo: '创建未来 n 天的调度数据')]
2220
class TaskSchedulerCreateCrontab
2321
{
2422
private LoggerInterface $logger;

src/Crontab/TaskSchedulerExecuteCrontab.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,12 @@
1515
use Dtyq\TaskScheduler\Service\TaskSchedulerDomainService;
1616
use Dtyq\TaskScheduler\Util\Locker;
1717
use Hyperf\Coroutine\Concurrent;
18-
use Hyperf\Crontab\Annotation\Crontab;
1918
use Hyperf\Logger\LoggerFactory;
2019
use Psr\Log\LoggerInterface;
2120
use Throwable;
2221

2322
use function Hyperf\Config\config;
2423

25-
#[Crontab(rule: '* * * * *', name: 'TaskSchedulerExecuteCrontab', singleton: true, mutexExpires: 90, onOneServer: true, callback: 'execute', memo: '执行调度')]
2624
class TaskSchedulerExecuteCrontab
2725
{
2826
protected Concurrent $concurrent;

0 commit comments

Comments
 (0)