Мой веб-сайт работал нормально в течение нескольких недель, я не вносил изменений в код / сервер, и сегодня я заметил, что получаю HTTP ERROR 500
, а иногда и Allowed memory size of 134217728 bytes exhausted (tried to allocate 31424352 bytes)
на одной из страниц моего веб-сайта со следующим кодом контроллера:
$builds = Cache::remember(
'All.builds.page.' . $currentPage . ".by." . $sortBy,
now()->addSeconds(30),
function () use ($sortBy) {
if ($sortBy == 'top') {
return Build::where('private', 0)->has('ratings', '>=', 5)->with(['user', 'hunter', 'ratings', 'views'])->withCount(['ratings as average' => function ($query) {
$query->select(\DB::raw('coalesce(avg(value), 0)'));
}])->orderByDesc('average')->paginate(15)->onEachSide(1);
}
return Build::where('private', 0)->with(['user', 'hunter', 'ratings', 'views'])->orderBy($sortBy, 'DESC')->paginate(15)->onEachSide(1);
});
Это происходит, когда для $sortBy
установлено значение top
и когда объект был кэширован. Например, если я захожу на страницу в первый раз, она вернет сборки с самым высоким рейтингом. Если я обновлю страницу, я увижу ошибку. Мне нужно подождать 30 секунд, пока не истечет срок действия кэша, или вручную очистить кэш, чтобы страница снова заработала.
Веб-сайт обработал в 10 раз больше трафика, чем сейчас, без каких-либо проблем, и теперь всевдруг это не работает. Кто-то знает, почему это происходит, и может указать мне правильное направление?