Доступ к готовым решениям

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Очереди в Laravel — мощный инструмент, позволяющий обрабатывать задачи в фоновом режиме.

markelov666

Умник
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!


Очереди в Laravel​

Очереди в Laravel — это мощный инструмент, позволяющий обрабатывать задачи в фоновом режиме. Они помогают улучшить производительность приложения, избегая задержек при обработке ресурсоемких операций, таких как отправка писем, генерация отчетов или работа с API.

Что такое очереди?
Очередь — это механизм, позволяющий откладывать выполнение задач, помещая их в определенное хранилище (очередь), а затем обрабатывать их в фоне специальным обработчиком (worker). Laravel предоставляет удобный интерфейс для работы с очередями, позволяя легко их настраивать и использовать.

Зачем использовать очереди?
  • Улучшение производительности. Долговременные операции выполняются в фоне, а не замедляют работу приложения.
  • Повышение отказоустойчивости. Если задача не удалась, её можно повторить.
  • Снижение нагрузки на сервер. Распределение нагрузки между обработчиками очереди позволяет избежать перегрузки.

Как работают очереди в Laravel?

Настройка драйвера очереди
Laravel поддерживает несколько драйверов для работы с очередями:
  • Database (использование базы данных)
  • Redis
  • Beanstalkd
  • Amazon SQS
  • Sync (синхронное выполнение)
  • Null (отключение очередей)
Настроить драйвер можно в файле .env:
Bash:
QUEUE_CONNECTION=database

Также следует выполнить миграцию для хранения очередей в базе данных:
Bash:
php artisan queue:table
php artisan migrate

Создание задачи (Job)
Чтобы создать новую задачу, используйте команду:
Bash:
php artisan make:job SendEmailJob

Этот класс создастся в app/Jobs/SendEmailJob.php. Внутри него реализуется метод handle, который содержит логику выполнения задачи:
PHP:
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeQueued;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Mail;
use App\Models\User;
use App\Mail\WelcomeMail;

class SendEmailJob implements ShouldBeQueued
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    protected $user;

    public function __construct(User $user)
    {
        $this->user = $user;
    }

    public function handle()
    {
        Mail::to($this->user->email)->send(new WelcomeMail($this->user));
    }
}

Запуск задачи в очередь
Для добавления задачи в очередь используйте метод dispatch:
Bash:
SendEmailJob::dispatch($user);

Можно также задать задержку:
Bash:
SendEmailJob::dispatch($user)->delay(now()->addMinutes(10));

Запуск обработчика очереди
Обработчик очереди запускается командой:
Bash:
php artisan queue:work

Если требуется постоянно запущенный обработчик, используйте:
Bash:
php artisan queue:work --daemon

Повторное выполнение задач
Если задача завершилась с ошибкой, Laravel позволяет настроить повторные попытки:
Bash:
php artisan queue:retry all

Заключение
Очереди в Laravel позволяют разгружать основной поток выполнения, выполняя ресурсоемкие операции в фоне. Использование очередей повышает производительность и масштабируемость вашего приложения. Laravel предоставляет удобные инструменты для работы с очередями, упрощая их настройку и управление.
 
Сверху Снизу