我在本地 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
在我的cmd提示符上,但我总是得到:
系统找不到指定的路径。
如果我输入
php artisan schedule:run
,它实际上会发送一封电子邮件,但只会发送一次。
我对整个概念的理解是错误的吗?我该如何正确地做到这一点?
如官方 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 的替代方案,您可以先阅读此处。