1. Очереди
Опишите, как работает система очередей в Laravel. Что делает команда php artisan queue:work --tries=3 и что произойдёт, если задача завершится с ошибкой? Укажите, какие механизмы повторных попыток и таблицы хранения неудачных заданий используются.
3. SQL-запрос
Предположим, у вас есть таблица orders(id, user_id, status, created_at). Напишите SQL-запрос, который возвращает количество заказов по каждому статусу за последние 7 дней.
4. Чистый код и архитектура
Проанализируйте следующий код контроллера и укажите три проблемы. Предложите, как улучшить архитектуру.
public function store(Request $request) {
$user = User::find($request->user_id);
$order = new Order();
$order->user_id = $user->id;
$order->amount = $request->amount;
$order->status = 'new';
$order->save();
Mail::to($user->email)->send(new OrderCreatedMail($order));
return response()->json($order);
}
6. Очередь SendDailyReportJob
Реализуйте Laravel Job SendDailyReportJob, который собирает количество новых пользователей за последние 24 часа и сохраняет результат в таблицу daily_reports(date, new_users_count). Объясните, как зарегистрировать задачу в планировщике и задать retry при ошибке.
8. SQL + NoSQL
В MySQL хранятся заказы (таблица orders), а в MongoDB — логи действий пользователей (user_logs). Как в Laravel получить всех пользователей, которые за последние 3 дня сделали заказ и имели хотя бы одно действие в логах? Опишите концепцию и возможный подход к реализации.