如何在SilverStripe 4中通过命令行运行BuildTask任务?

问题描述

在SilverStripe 4文档中,它说我可以扩展DevBuild类并在UNIX命令行中使用cron调用任务。

https://docs.silverstripe.org/en/4/developer_guides/cli/#running-regular-tasks-with-cron

我在app / src / Tasks / MyTask.PHP上编写了一个名为MyTask的类,如下所示:

use SilverStripe\Dev\BuildTask;

class MyTask extends BuildTask
{
    private static $segment = 'MyTask';

    protected $title = 'My Task';
    protected $description = 'A task that I want to run via cron job';
    protected $enabled = true;

    public function run($request){
        exit('Done run!');
    }
}

dev/build?flush=1之后,我可以通过mysite.com/dev/tasks/MyTask上的URL成功运行任务。 但是我无法运行./vendor/bin/sake dev/tasks/MyTask

注意:我可以通过命令行运行./vendor/bin/sake dev/tasks,这向我显示了Silverstripe的构建任务列表,而不是我的。

我显然缺少了什么,有人可以帮忙吗?

解决方法

有关解决方案,请参见Robbie Averill的评论。

确保您运行vendor / bin / sake dev / task flush = 1来刷新您的 缓存,对于CLI和Web浏览器–Robbie Averill

可能是不同的缓存