Senior: питання на співбесіді з теми «Queues»
Найпопулярніші питання з реальних Laravel/PHP співбесід для всіх рівнів
Всі теми
API
Authentication
Authorization
Broadcasting
Caching
Collections
Database
Debugging
DevOps
Eloquent
Enums
Events
Filament
Files
HTTP та Request
Livewire
Mail
Middleware
Notifications
Pagination
Performance
PHP
Queues
Scheduling
Search
Seeder
Service Container
Service Providers
Testing
Архітектура
Безпека
Локалізація
Масштабування
2 питання
Horizon - панель і конфігурація черг на Redis. Дає те, чого немає в базовому queue:work.
// config/horizon.php
'supervisor-1' => [
'connection' => 'redis',
'queue' => ['high', 'default'],
'balance' => 'auto', // авто-балансування воркерів
'maxProcesses' => 10,
],
Можливості:
- Реалтайм-метрики: throughput, час очікування, runtime завдань.
- Авто-балансування процесів між чергами за навантаженням.
- Керування невдалими завданьами, теги, сповіщення про довге очікування (
LongWaitDetected).
Запуск - php artisan horizon; під капотом це менеджер довготривалих воркерів. Дашборд захищають gate viewHorizon.
Завдання можуть падати через тимчасові збої (мережа, rate limit) - потрібна стратегія повторів і обробки остаточних провалів.
class CallApi implements ShouldQueue
{
public int $tries = 5; // спроб
public int $maxExceptions = 2;
public int $timeout = 30;
// прогресивна затримка між спробами
public function backoff(): array
{
return [10, 30, 60]; // 10с, 30с, 60с...
}
public function failed(Throwable $e): void
{
// викликається після вичерпання спроб
}
}
- Остаточно провалені завдання осідають у таблиці
failed_jobs. php artisan queue:retry all- повторити,queue:flush- очистити.releaseAfter,WithoutOverlapping,RateLimitedmiddleware керують поведінкою.- Ідемпотентність (idempotency) обов'язкова - бо завдання може виконатися повторно.