У меня есть запланированное задание в Kernel.php
, которое вызывает метод с именем cronCache
в userController
. Запланированное задание запускается каждую минуту в Laravel Forge
Kernel.php
protected function schedule(Schedule $schedule)
{
// $schedule->command('inspire')
// ->hourly();
//check cache every 1 min
$schedule->call('App\Http\Controllers\userController@cronCache')
->everyMinute();
}
userController@cronCache
:
public function cronCache() {
$vw = Cache::remember('userCountCache',10,function(){
return $query = DB::table('vwUserCount')->first();
});
}
Этот метод кэширует запрос MySQL, и он успешно выполняется, но только когда я вошел в свое приложение. Как только я выйду из системы, задача прекратится. Когда я снова вхожу в систему, задача продолжает выполняться снова.
У меня есть другой метод в userController
, который создает кэш того же запроса, если при загрузке моего представления его не существует. Я не знаю, относится ли это к делу, но я включаю это здесь:
public function showUserCache() {
$vw = Cache::remember('userCountCache',3,function(){
return $query = DB::table('vwUserCount')->first();
});
$userCount = $vw->userCount;
return view ('backend.user_summary', compact('userCount'));
}