如何在laravel中每分钟进行一次查询?

时间:2021-02-27 08:22:31

标签: php laravel schedule

我是 Laravel 调度器系统的新手。 我正在使用 Laravel 8。 我已经阅读了 laravel 关于 kernel.php 文件的文档。

这是我的日程安排方法


namespace App\Console;

use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
use Illuminate\Support\Facades\DB;

class Kernel extends ConsoleKernel
{
   /**
   * The Artisan commands provided by your application.
   *
   * @var array
   */
   protected $commands = [
      //
   ];

   /**
   * Define the application's command schedule.
   *
   * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
   * @return void
   */
   protected function schedule(Schedule $schedule)
   {
      $schedule->call(function () {
         DB::table('verifications')->truncate();
      })->everyMinute();
   }

   /**
   * Register the commands for the application.
   *
   * @return void
   */
   protected function commands()
   {
      $this->load(__DIR__.'/Commands');

      require base_path('routes/console.php');
   }
}

但它不能正常工作。

3 个答案:

答案 0 :(得分:0)

您需要运行 crontab,它将每分钟执行一次您的 laraver 调度程序

答案 1 :(得分:0)

schedule() 是一个将您需要的所有 cron 作业组合在一起的函数。 但是您仍然需要使用命令运行此功能,如果您在本地只需运行 php artisan schedule:work 如果您不在本地,则需要创建一个 cron 作业来为您运行此命令! 希望有用!

答案 2 :(得分:0)

您需要设置一个 cronjob 来运行 Laravel 调度程序。调度程序每分钟运行一次,并确定在什么时间运行哪个命令。

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

手册:Running The Scheduler

编辑:这主要适用于 Linux/Unix 操作系统,对于 Windows 我认为你可以设置 Windows 调度程序,但我不精通

Edit2:要在不设置 cronjob 的情况下在本地测试您的计划,您可以按照 Running The Scheduler Locally

中的说明运行 php artisan schedule:work