Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 5 如何使用schedule启动cron作业:在Laravel 5中手动运行(实际上是10月)_Laravel 5_Cron_Laravel Artisan_Octobercms - Fatal编程技术网

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

Laravel 5 如何使用schedule启动cron作业:在Laravel 5中手动运行(实际上是10月),laravel-5,cron,laravel-artisan,octobercms,Laravel 5,Cron,Laravel Artisan,Octobercms,我知道如何在Linux服务器上运行cron作业, 我知道如何使用$schedule->command('foo')->daily(); 我已多次阅读该文件 但我的问题是我应该在哪里写这句话呢 $schedule->command('foo')->daily();? 那么$schedule变量实际上是什么呢?我的意思是,这是父类中的任何预定义变量,如果不是的话,我们可以直接调用它,在我们的文件中包括哪个类,以及如何实例化这个$schedule对象 我主要关心的是安排作业的优雅方式是什么,在我编写逻

我知道如何在Linux服务器上运行cron作业, 我知道如何使用$schedule->command('foo')->daily(); 我已多次阅读该文件

但我的问题是我应该在哪里写这句话呢 $schedule->command('foo')->daily();? 那么$schedule变量实际上是什么呢?我的意思是,这是父类中的任何预定义变量,如果不是的话,我们可以直接调用它,在我们的文件中包括哪个类,以及如何实例化这个$schedule对象

我主要关心的是安排作业的优雅方式是什么,在我编写逻辑的代码中编写这段代码的意义是什么,因为如果我没有错的话,这一行应该在一生中运行一次,因为这将在作业表中推送作业,然后 ******php/path/to/artisan计划:run 1>>/dev/null 2>&1应该在剩余的生命周期中处理它

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


请告诉我,为什么没有书面文档说明如何手动运行计划任务,而不将其写入在实际web应用程序执行过程中多次调用的代码中。

首先,除非您实际使用的是Laravel 5.0,您需要确保查看的是正确的版本文档(特别是如果您使用的是5.0,我强烈建议升级,因为它长期不受支持)。当前版本(截至本文撰写之时)和10月CMS已相应更新

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

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

如果您有一个要使用的部署脚本,并且希望以编程方式调用该单个命令,则可以在部署脚本中执行此操作(请确保导入Artisan facade):

采取三个步骤:

1) 设置cron任务

Cron将每分钟调用一次命令调度程序。然后,十月评估所有计划任务并运行到期的任务

2) 使用控制台命令

此命令可以在命令行上手动执行。并且可以在计划的时间执行,如下所述

3) 在插件注册类中注册新生成的控制台命令的计划


希望这有帮助

谢谢Shauna的回复,你说得对,我想安排一个任务,但不想在每次调用脚本时重复计划的过程,谢谢Shauna的回复,实际上,我想安排重复作业,但不想在每次调用脚本时重复安排作业的过程,因此我不能使用Artisan::call('your:command');在部署脚本中。不过,我希望我可以在部署脚本中使用$schedule。无论如何,OctoberCMS中没有Console/Kernel.php这样的文件,所以我必须在插件注册类中使用registerSchedule方法。
Artisan::call('your:command');
class MyPlugin extends PluginBase
{
    [...]

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