尝试在Laravel中运行一个非常大的函数,从Google Places API中获取大量数据,并将部分存储在数据库中作为表中的新条目。问题是它在我当前的条目附近为我自动发现新条目,并创造更多的工作。
当我通过GET访问命令时,它最终会超时。我已经尝试将它作为Redis的预定命令运行但坦率地说我似乎无法弄清楚它是如何工作的。我创建了一个工作,我试图用dispatch对它进行排队,然后它立即尝试立即运行它并最终再次超时。
如果不暂停整个服务器,如何运行此大型任务?
由于
答案 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