У меня огромная таблица Users (может быть, около 4M строк), и я хочу запускать ежемесячное задание для проверки даты последнего входа в систему, и если они не вошли в систему, обновите пользователя и обновите столбец isPassive со значением true.
$users = \DB::table('users')
->whereNull('isPassive')->get();
foreach($users as $user)
{
if(!$user->wasActive())
{
$this_user = (new User)::where('id', $user->id)->first();
$this_user->isPassive = true;
$this_user->save();
}
}
Я научился запускать задания с помощью Laravel, но это вызывает у меня проблемы с памятью.Ну, я могу увеличить память сервера, но из того, что я прочитал здесь, увеличение памяти не всегда является лучшим решением.
Я пробовал результаты чанка , но когда я использую where()
, этопросто виснет.Если я использую его без условий и условия, то все работает хорошо.
Мне интересно, как опытный разработчик сломает эту работу, чтобы использовать меньше памяти?
Помечен как Laravel, но это вопрослюбой новый программист может столкнуться при обучении лучше управлять памятью.
Спасибо за любой совет