connectholland/tactician-scheduler-plugin

此包已被废弃,不再维护。未建议替代包。

Tactician插件,允许在未来的某个特定时间执行命令

1.1.1 2016-04-04 13:08 UTC

This package is auto-updated.

Last update: 2023-05-29 00:58:29 UTC


README

Tactician插件,允许在未来的某个特定时间执行命令

Build Status Coverage Status SensioLabsInsight Latest Stable Version Total Downloads Latest Unstable Version License

概念

此插件允许您创建将在未来特定时间执行的ScheduledCommands。

使用方法

确保将SchedulerMiddleware放入您的CommandBus中间件链中

// create your other middleware
$middleware[] = new SchedulerMiddleware(new FileBasedScheduler($pathWhereTheSchedulerMayKeepItsFiles) );
// create your other middleware
$commandbus = new CommandBus($middleware);

让您想安排的命令继承自AbstractScheduledCommand或实现ScheduledCommandInterface。创建它并设置执行时间

class SayHappyNewYear extends AbstractScheduledCommand
{
    private $message;

    public function __construct($message)
    {
        $this->message = $message;
    }

    public function getMessage() 
    {
        return $this->message;
    }
}

$myScheduledCommand = new SayHappyNewYear('Happy New Year');
$myScheduledCommand->setTimestamp(strtotime('2016-01-01 0:00:00') );
$myCommandBus->handle($myScheduledCommand);

创建一个引导文件,构建您的Commandbus并使用cron安排执行命令,例如bootstrap.php

// setup any environment you need
// create your other middleware
$middleware[] = new SchedulerMiddleware(new FileBasedScheduler($pathWhereTheSchedulerMayKeepItsFiles) );
// create your other middleware
$commandbus = new CommandBus($middleware);
return $commandbus;

按您喜欢的任何间隔安排Cron调度器(运行得越多,您对命令的调度越精确),例如每分钟运行一次

* * * * *   www-data    vendor/bin/scheduler scheduler:execute bootstrap.php

或者,您可以使用该包附带的管理员命令,每10秒安排一个迭代,使用

vendor/bin/scheduler scheduler:daemon bootstrap.php 10

使用以在一分钟后停止

vendor/bin/scheduler scheduler:daemon bootstrap.php 10 6