Laravel - 任务调度

3
我在本地的WAMP服务器上使用Laravel 5.4。我想要执行任务调度,但我不确定自己是否真正理解了它的工作原理。
我创建了一个名为cronEmail的命令,并在handle()函数中添加了获取电子邮件的代码。 在Kernel.php中,我添加了以下内容:
protected $commands = [
    'App\Console\Commands\cronEmail'
];

...

protected function schedule(Schedule $schedule)
{
    $schedule->command('send:email')
             ->everyMinute();
}

我想每分钟收到一封电子邮件。但是我该如何开始呢?我尝试输入:
php artisan schedule:run >> /dev/null 2>&1

或者甚至
php C:\wamp64\www\seo-parser\artisan schedule:run >> /dev/null 2>&1

在我的命令提示符上,但我总是得到以下错误信息:
系统找不到指定的路径。
如果我输入“php artisan schedule:run”,它实际上会发送一封电子邮件,但只会发送一次。
我是否对整个概念有误解?我应该如何正确操作?

2
我建议你选择Homestead。这样你就可以在Linux环境下尝试代码,并按照所有文档步骤进行操作,例如Cron Job。另一个优点是大多数托管都使用Linux。 - Shiro
以下是我在WAMP(Windows)上实现Laravel任务调度(cron jobs)的方法,它可以处理计算机休眠的情况:https://stackoverflow.com/a/64689809/470749 - Ryan
1个回答

2

Laravel官方文档所述,您需要将以下行添加到您的crontab中。

* * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1

您可以在控制台中输入“crontab -e”来执行此操作。将上述行粘贴并将“/path-to-your-project”替换为您的项目路径。

这将创建一个cronjob,每分钟调用“php artisan schedule:run”命令。

但是,这需要您运行Linux。如果您在Windows上运行并需要crontab的替代方法,可以从此处开始阅读。


3
在Windows操作系统中(更相关于实际问题),您可以使用任务计划程序。 - RiggsFolly
1
是的,但任务计划程序没有控制台,那么我应该把这行代码放在哪里?
          • php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1
- Patrick Teixeira Felix
@PatrickTeixeiraFelix 您可以创建一个 .bat 文件,其中调用 php artisan schedule:run 并像这样将其添加到任务计划程序中:schtasks /create /tn "MyTask" /sc minute /mo 1 /tr "MyTask.bat" - jrenk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接