如何使用计划启动cron作业:在Laravel 5中手动运行(实际上是10月CMS)

时间:2017-09-12 12:37:59

标签: laravel-5 cron artisan octobercms

我知道如何在Linux服务器上运行cron作业, 我知道如何使用$ schedule->命令(' foo') - > daily(); 我已多次阅读此文档https://laravel.com/docs/5.0/artisan

但我的问题是我应该在哪里准确地写这一行 $时刻表>命令('富') - >每日();? 什么是$ schedule变量呢?我的意思是这是父类中的任何预定义变量,如果不是我们将在文件中包含哪个类以及如何实例化这个$ schedule对象,我们可以直接调用它们。

我主要担心的是调度作业的优雅方式是什么,在我编写逻辑的代码中写这个是什么意思,因为如果我没有错,这行应该在生命中运行一次因为这会推动乔布斯表中的工作然后 * * * * * php / path / to / artisan schedule:run 1>> / dev / null 2>& 1应该在剩余的生命周期内处理它

然后我将编写这样的代码,在启动主cron计划之前我们在服务器上部署应用程序时只运行一次:run。

请有人指导我为什么没有关于如何手动运行计划任务的书面文档而不将其写入代码中,该代码将在执行真实世界的Web应用程序期间多次调用。

2 个答案:

答案 0 :(得分:1)

首先,除非你真的使用Laravel 5.0,否则你要确保你正在查看正确的版本文档(如果你使用的是5.0,特别是建议升级,因为它长期不支持)。当前版本(截至撰写本文时)is 5.5和10月CMS已相应更新。

关于您的问题,如果我理解您的权利,您不希望计划,重复工作,而只需an Artisan command。要编写Artisan命令,可以在Console/Commands文件夹中创建一个类(可以使用make:command Artisan命令生成)并在Console/Kernel.php中注册它。然后,您可以通过运行php artisan your:command来访问它(其中your:command是您为命令选择的名称)。

如果您想安排重复的工作,请将$schedule行放入Console/Kernel.php$schedule变量是通过Laravel的依赖项解析器导入的。

如果您有一个使用的部署脚本,并且想要以编程方式调用该单个命令,则可以在部署脚本中执行with Artisan::call()(确保导入Artisan外观):

Artisan::call('your:command');

答案 1 :(得分:0)

采取的三个步骤:

1)设置cron任务
http://octobercms.com/docs/setup/installation#crontab-setup

  

Cron每分钟都会调用命令调度程序。然后10月评估任何计划任务并运行到期的任务。

2)制作控制台命令
http://octobercms.com/docs/console/development
可以在命令行上手动执行此命令。并且可以在预定的时间执行,如下所述。

3)在插件注册类中注册新制作的控制台命令的时间表 http://octobercms.com/docs/plugin/scheduling#defining-schedules

class MyPlugin extends PluginBase
{
    [...]

    public function registerSchedule($schedule)
    {
        $schedule->command('cache:clear')->daily();
    }
}

希望这有帮助!