Windows上的Laravel 5.1任务计划

时间:2015-10-05 13:40:02

标签: laravel batch-file cron scheduled-tasks laravel-5.1

我正在努力让Laravel 5.1任务调度在IIS上运行。当我使用Windows任务管理器运行批处理文件时,它将仅运行一次任务。如何才能使> everyMinute()工作?

Windows批处理文件:

cd c:\inetpub\myapp
c:\PROGRA~2\PHP\php.exe artisan schedule:run 1>> NUL 2>&1

内核:

class Kernel extends ConsoleKernel
{
    protected $commands = [

        \App\Console\Commands\MyCommand::class,

    ];

    protected function schedule(Schedule $schedule)
    {
        $schedule->command('test')->everyMinute();
    }
}

命令:

public function handle()
    {
        log::info('test');
    }

4 个答案:

答案 0 :(得分:4)

查看task scheduler doc。

  

启动计划程序

     

以下是您需要添加到服务器的唯一Cron条目:

     

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

     

这个Cron每分钟都会调用Laravel命令调度程序。然后,Laravel评估您的计划任务并运行到期的任务。

在您的情况下,您使用Windows任务计划程序而不是Cron,但重要的是每分钟调用artisan schedule:run。每次运行此命令时,它都会检查其计划并运行添加的到期任务/命令。

artisan schedule:run无法启动一个长时间运行的进程,该进程在运行任务之前保持活动状态,直到您将其终止。正如我所说,它需要每分钟调用一次。

答案 1 :(得分:4)

您需要创建一个每分钟执行该批处理文件的计划任务。

这样做:

  • 赢取 + R 并运行taskschd.msc

  • 在右侧面板中,单击创建基本任务并为其指定名称+说明。

  • 单击下一步并选择启动程序选项,然后导航到批处理文件并选择它。无需填写其他字段。

  • 选择"打开此任务的属性..."然后完成。

  • 触发器标签上,您可以在每日登录时之间进行切换(与我一样)。

    以下是未记录的部分,打开保管箱并使用键盘插入 1 ,这是将重复时间设置为1分钟的唯一方法(即使下拉列表)不列出它。)

    Larevel需要cronjob每分钟运行一次,否则它不会按预期工作。

    同时检查"无限期"运行它的生命周期。

希望它有所帮助。

如果遇到问题, Windows任务计划程序帮助here

答案 2 :(得分:1)

我有一个解决方案 创建到文件Executable xxx.cmd,打开文件并写下一个文本。

 @echo off

echo   - = = =   Schedule Run Jobs == = = = -


CD d: &&  CD \xampp\htdocs\folderlaravel && php artisan schedule:run

timeout 86400 

CD d: &&  CD \xampp\htdocs\folderlaravel && "Schedule.cmd"

pause

@cls

你所做的就是在无限循环中运行和运行,具体取决于你给出的超时。在这种情况下,86400 => 1天。

有点含糊不清但它有效:)

我希望它适合你。

答案 3 :(得分:0)

Windows确实支持 Laravel Scheduler ,但您已经多次自行运行该命令。由于我们无法使用 Windows任务计划程序每1分钟运行一次,因为我们可以使用linux crontab。如果您正在使用Windows开发环境,并且想要测试命令是否正在运行,则可以尝试此操作

如果你运行

  

php artisan schedule:运行

多次执行

命令,为每次试验提供最小间隙,然后才能工作。

enter image description here

如果您想直接运行命令,可以按照此操作。

  

"路径\到\ php.exe的" "人员"你的命令> " NUL" 2>& 1&

您可以使用以下步骤找到php.exe的路径。

  

运行"其中php.exe"在命令提示符