Laravel - 安排大型任务

时间:2018-03-21 10:00:38

标签: php laravel scheduled-tasks

尝试在Laravel中运行一个非常大的函数,从Google Places API中获取大量数据,并将部分存储在数据库中作为表中的新条目。问题是它在我当前的条目附近为我自动发现新条目,并创造更多的工作。

当我通过GET访问命令时,它最终会超时。我已经尝试将它作为Redis的预定命令运行但坦率地说我似乎无法弄清楚它是如何工作的。我创建了一个工作,我试图用dispatch对它进行排队,然后它立即尝试立即运行它并最终再次超时。

如果不暂停整个服务器,如何运行此大型任务?

由于

  • 扎克

1 个答案:

答案 0 :(得分:1)

我很简单,你不需要停止服务器。这只是CRON的工作。使用Laravel Schedule。

使用调度程序时,只需将以下Cron条目添加到服务器即可。

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

类示例:

namespace App\Console;

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

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('recent_users')->delete();
        })->daily();
    }
}

更多:https://laravel.com/docs/5.6/scheduling

有关laravel计划的精彩视频:https://www.youtube.com/watch?v=mp-XZm7INl8