我在 Laravel 5.4 调度程序中安排了一个命令,并希望在 Mac OS X El Capitan 上启动Laravel cron。
应用程序/控制台/ Kernel.php
<?php
namespace App\Console;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
protected $commands = [
'App\Console\Commands\GetToken'
];
protected function schedule(Schedule $schedule) {
$schedule->command('gettoken')->everyMinute();
}
protected function commands() {
require base_path('routes/console.php');
}
}
我的GetToken.php进行API调用,然后进行数据库更改。我相信这是正常的,因为我可以使用以下命令直接从cli运行任务:
php / path / to / project / artisan schedule:run 1&gt;&gt; / dev / null 2&gt;&amp; 1
要编辑我的cron文件,我使用:
env EDITOR = nano crontab -e
然后我添加:
* * * * * php /path/to/project/artisan schedule:run >> /dev/null 2>&1
我用ctrl + o保存并用ctrl + x退出。
重新编辑文件显示更改已保存。
运行 crontab -l </ strong>会显示我在crontab文件中输入的文字。
我的cron永远不会运行。我只能通过使用上面提到的命令手动运行来运行一次。
答案 0 :(得分:25)
不是直接回答你的问题,而是提出另一个解决方案:
如果要为开发环境设置cron作业,最好使用Homestead,以符合其Linux标准。
对于直接在macOS中开发的小项目,我在项目根目录(在单独的终端选项卡中)中运行以下命令,让我的作业每分钟运行一次:
while true; do php artisan schedule:run; sleep 60; done
这有助于确保cron作业仅在我开发时运行。当我完成后,我Ctrl+C
那个命令,可以确定在我不看的时候没有意外发生。
另外,通过简单地为睡眠命令选择另一个秒数,它可以让我自由地调整间隔。这可以节省开发时间。