Тёмный
No video :(

Laravel Queues | Очереди на Laravel | Как реализовать долгие задачи 

Lectoria. Обучение веб-разработке.
Просмотров 10 тыс.
50% 1

В этом уроке я покажу, как применять очереди в Laravel и в каких случаях их стоит применять. Разберем создание Job (Джобов) и на примере простой отправки письма увидим, как меняется поведение приложения при использовании очередей и без их использования.
🔗 Официальная документация по очередям: laravel.com/do...
🔗 Laravel Horizon: laravel.com/do...
✅ Instagram: / lectoria.pro
✅ VK: lectoria
✅ Facebook: lectori...
✅ Сайт проекта Lectoria: lectoria.pro
🖥 Обучение веб-разработке Lectoria: / @lectoria
🖥 Обучение разработке на MODX Revolution: / openmodx

Опубликовано:

 

21 авг 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 49   
@darkfateinc7333
@darkfateinc7333 2 года назад
Очень круто, что ты полностью показал все шаги. Благодаря уроку понятно не только как использовать jobs, но и в какой последовательности они работают с контроллером.
@bonefabric
@bonefabric 2 года назад
Хорошие видео, каких мало в сети. Спасибо
@johnsnow24
@johnsnow24 2 года назад
Отличный урок. Большое спасибо.
@MaxKlassen
@MaxKlassen 2 года назад
Спасибо! У вас лучшие ролики по Laravel! Расскажите, пожалуйста, еще про работу с событиями
@lectoria
@lectoria 2 года назад
Про события в одном из следующих роликов обязательно расскажу.
@ardixq
@ardixq 2 года назад
@@lectoria честно?
@lectoria
@lectoria 2 года назад
@@ardixq Читаю, уже 3 месяца прошло ))) Время летит беспощадно. У меня даже сценарий к уроку по событиям подготовлен. Вот прям совсем скоро будет ролик. Не всегда получается записать быстро, сейчас все очень плотно по рабочим задачам...
@mh6228
@mh6228 2 года назад
Спасибо тебе большое за старания... Сделай пожалусто урок по поводу событий и их слушателей что вообще из себя они представляют
@khomaldi
@khomaldi 2 года назад
это было полезно. спасибо)
@dmitrykevdin7425
@dmitrykevdin7425 2 года назад
Спасибо!
@LeonardoOleg2
@LeonardoOleg2 2 года назад
спасибо, полезно
@user-mj9wm6dl1c
@user-mj9wm6dl1c 2 года назад
Ура! новое видео на лучшем канале.. как раз передо мной стоит задача создать очереди: 1) проверка 500 сущностей по 5 штук в минуту, запуская все это в 1 час ночи раз в сутки... вот пока не пойму как ограничить "по 5 в минуту" (ограничение стороннего API, откуда буду тянуть данные)
@lectoria
@lectoria 2 года назад
Да очень просто. Перед обработкой следующих 5-ти сущностей запоминай текущее время, после окончания их обработки возьми разницу между текущим временем и временем, которое ты сохранил. Если эта разница меньше 1 минуты, то подожди, если больше 1 минуты, то запускай обработку следующих 5-ти сущностей по такому же принципу.
@user-mj9wm6dl1c
@user-mj9wm6dl1c 2 года назад
@@lectoria да, в эту сторону и думал... но вроде в параметрах воркера очередей есть параметр, отвечающий за лимит.... как дойду до джобов - читану документацию подробнее.... пока настраиваю бэкенд (взял Nova для бэкенда, чтоб с формочками не долбаться.. покрывает 90% потребностей админки на УРА"... Спасибо еще раз, Артем, за самые толковые уроки.. я в php недавно (полгода... ).. пришлось в 42 года резко сменить профессию =).. ваши уроки - просто отличные.. а то весь Ютуб полон "индусского кода" либо "Гоша Дударь, C# за 15 минут" 😁
@anatoliiilescu839
@anatoliiilescu839 2 года назад
Супеeeeeeeeeeeeeeeeeeр!
@kirilyaksa
@kirilyaksa 2 года назад
Спасибо
@phpfreelancer5458
@phpfreelancer5458 2 года назад
все классно но музыка на фоне мешает она то громче то тише и ударники , если есть альтернатива поставь какую то мягкую мелодию классику
@divansimdrive
@divansimdrive 2 года назад
Минус в том что надо очередь вручную запускать через консоль. Не хватает конечно в php цикла событий как в node.js, для того чтобы после выполнения основного стека, сразу или паралельно выполнялось отложеное задание. А не потом когда то там по команде из консоли. У меня например нет доступа к консоли на хостинге и консольные команды запускать не получится, только если из кода. Остается вешать на крон, но крон довольно ресурсоемкая штука, на сколько я помню при ручном запуске весь сайт подвисает. Возможно только если диспатчить сначала а потом сразу вызывать консольную команду следом из контроллера, не вызовет ли это тоже задержку и подвисание.
@lectoria
@lectoria 2 года назад
По сути что-то вроде цикла событий в Laravel как раз реализовано через запуск демона-обработчика очереди. А то, что касается доступа к консоли, то у меня здесь такие рассуждения: Laravel обычно используют не для простых проектов, а для тех, где требуется специфичная логика и длительная поддержка, такие проекты целесообразно хостить не на виртуальном хостинге, а на виртуальном выделенном сервере (VPS/VDS) или на физическом выделенном сервере. Благо, что цены сейчас на VDS не сильно отличаются от виртуального хостинга. Для виртуального хостинга же, как вы верно заметили, есть крон, как правило, к нему хостер дает доступ через веб-интерфейс. Вы можете повесить на крон запуск обработчика очереди каждую минуту и будет почти то же самое. Но это, как мне кажется, больше костыль, чем адекватное решение. Решение диспатчить, а потом сразу вызывать консольную команду - тоже выглядит как костыль. Поэтому, я думаю, лучше потратить пару часов на изучение развертывания сервера на VDS и забыть про виртуальный хостинг навсегда. По настройке VDS у меня есть видео: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-wKghw1bhzbM.html
@mh6228
@mh6228 2 года назад
Ещё урок по теме что такое API
@codeurient
@codeurient 2 года назад
а можно урок про то как работать с базой данных через паттерн репозиторий ? иииииииииии в прцессе работы с данными как использовать атрибут pivot для моделей и включить его в запросы по поиску в RestApi ?
@user-vf7pc4tn9z
@user-vf7pc4tn9z Год назад
покажи как работать с rabbitmq и другими микросервисами там например на fastapi
@user-gw2dw5qs5w
@user-gw2dw5qs5w Год назад
Такой вопрос от новичка: команду php artisan queue:work нужно запустить после того как проект выложил на хостинг и потом забыть про нее? Она не отвалится? Как отслеживать или предусмотреть случай, что сервер откажет на время - ведь в этом случае насколько понял нужно заново ее вводить?
@lectoria
@lectoria Год назад
Если просто запустить php artisan queue:work, то если он случайно отвалится, то автоматически не перезапустится. Поэтому рекомендуется использовать supervisor для того, чтобы он контролировал, что процесс запущен. И если вдруг отвалится, то supervisor автоматически его перезапустит.
@user-ib9py6bv4t
@user-ib9py6bv4t 2 года назад
Не могли бы Вы добавить видео про широковещание (Broadcast) или хотя бы как делать динамические онлайн-оповещения на сайте?
@lectoria
@lectoria 2 года назад
Есть такое видео в планах. Пока не могу сказать точные даты выхода. Следите за новыми выпусками.
@talas12341
@talas12341 2 года назад
А поподробней про отлавливатель емейл можно?
@lectoria
@lectoria 2 года назад
Конечно ) Инструмент называется mailhog, бесплатный: github.com/mailhog/MailHog
@yuriishportko5935
@yuriishportko5935 Год назад
Как можно организовать очереди если приложение развернуто на нескольких серверах и нужно чтобы некоторые задачи выполнялись только на тех серверах где в енв к примеру стоит флаг? хостинг на амазоне...
@lectoria
@lectoria Год назад
Хороший вопрос. Если на каждом из серверов свой менеджер очередей, то как по мне, достаточно сделать свой базовый Job-класс для всех задач, выполняемых на сервере. И в этом классе реализовать ту самую проверку на наличие флага в очереди. Второй вариант - реализовать свой класс для работы с очередью, который будет наследоваться от базового стандартного класса и точно так же в нем реализовать проверку на наличие этого флага. Если флаг выключен, то просто не отправлять задачу в очередь.
@irvicon
@irvicon 2 года назад
Подскажите есть ли возможность использовать очереди на шаред хостинге?
@lectoria
@lectoria 2 года назад
Честно говоря, не думал об этом. Но, как мне видится, вряд ли такое получится, потому что для работы с очередями нужен процесс менеджера очередей, который должен быть постоянно запущен. На шаред хостинге хостер вряд ли такое позволит.
@ddrdeveloper
@ddrdeveloper 2 года назад
Я не совсем понял, этот функционал заменяет стандартный CRON на хостинге?
@lectoria
@lectoria 2 года назад
Не совсем. Это похоже на cron, но с гораздо бОлььшими возможностями. CRON просто запускает какой-либо скрипт с определенной периодичностью, а механизм очередей позволяет программно решать, какие задачи отправлять в очередь, с какой задержкой, с каким количеством неудачных попыток и так далее.
@olegkuhalskiy6423
@olegkuhalskiy6423 2 года назад
Добрый вечер, как можно реализовать такой функционал : Изображение загружаются на определенной странице, далее попадают в очередь обработки в которой происходит наложение фильтра размытия, добавление водяного знака, создание уменьшенной копии изображении, после того как все готово изображению присваивается статус «готово»
@lectoria
@lectoria 2 года назад
Создайте джоб, который будет отправляться в очередь, а уже в джобе делайте с изображением все, что душе угодно. Как пример, можно использовать вот этот пакет для обработки картинок: image.intervention.io/
@stasproedition659
@stasproedition659 2 года назад
Можете рассказать про более продвинутый уровень программирования, солид, ddd, dto, хоть что то из этого) потому что уроков на ютубе нету особо
@lectoria
@lectoria 2 года назад
Эти темы, мне кажется, сродни философским, потому что в них нет на 100% четко детерминированных правил и их можно трактовать по-разному, поэтому я такие темы, честно говоря, даже не рассматривал для видео. У меня обучение программирование происходило эмпирически - практика, практика и еще раз практика, поэтому у меня нет четкого понимания, всегда ли я следую правилам solid, ddd, dto, но когда я иногда про них вспоминаю и перечитываю, о чем это все, понимаю, что в большинстве случаев, особенно в последнее время, я следую этим принципам иногда даже неосознанно :) В общем, это я к тому, что сходу разложить по полочкам эти принципы и объяснить их в видео я не смогу, нужно будет основательно подготовиться. Но за наводку - спасибо. Добавлю в список тем себе.
@digitalturkistan1857
@digitalturkistan1857 2 года назад
Канал Тимура Шемсединова глянь
@alexandr-v
@alexandr-v 2 года назад
Спасибо за урок. А запускать эти очереди получается на обычном хостинге не выйдет? для этого нужен будет vps?
@lectoria
@lectoria 2 года назад
Все зависит от хостинга. Если есть доступ к ssh, то по идее должно получиться. Единственное, что я помню, на виртуальных хостингах стоит ограничение на время запуска процесса, поэтому, возможно, отправить воркер в бэкграунд на 100% не получится. В общем, если хочется без костылей и по-человечески, то лучше хотя бы VPS ))
@Lubenchenko
@Lubenchenko 2 года назад
Через cron можно запустить
@user-dw6gg7qh6s
@user-dw6gg7qh6s 9 месяцев назад
Приветствую. При отправке письма с вложением возникает такая ошибка - Serialization of 'Illuminate\Http\UploadedFile' is not allowed . Погуглил, пишут, что надо сперва сохранить файл на диске. Но я так и делал. Помогите разобраться
@lectoria
@lectoria 9 месяцев назад
Отправка происходит через Job. А Job делает сериализацию данных. Файл не может быть сериализован. Для того, чтобы корректно обрабатывать такой кейс, перед сериализацией, файл необходимо сохранить на диск, а когда происходит десериализация - забрать его с диска и приаттачить к письму.
@user-dw6gg7qh6s
@user-dw6gg7qh6s 9 месяцев назад
@@lectoria Да я и так сначала сохранил его на диске. Может запилишь как-нить ролик про то, как грузить большие файлы на диск с помощью очередей?
@olegkuhalskiy6423
@olegkuhalskiy6423 2 года назад
Laravel/horizon на windows не работает ?
@lectoria
@lectoria 2 года назад
Не пробовал его запускать под виндой, так как не работаю в ней вот прям совсем. Может кто-нибудь из подписчиков что-то ответит?
@devcrghome7061
@devcrghome7061 2 года назад
не совсем понятно. Тема не раскрыта. Запустили с консоли - тупость, так я могу и с базы отправить сам, да и глупость эта штука... Как такое положить в CGI нет, иначе глупость. Есть Демон, окей - а как он работает? Что если сервер перезагружается, сам запустится? Вот больше вопросов, чем сути... Понимаете - есть ракета, на которой Илон полетит на Марс, и Вы такой - "как полетит - ща раскажу, вот сядет и полетит"... Что?
@ardixq
@ardixq 2 года назад
Артем Зернов, это что за приколы? где новые видео?
Далее
Laravel Events
32:47
Просмотров 6 тыс.
Simple Flower Syrup @SpicyMoustache
00:32
Просмотров 667 тыс.
Ресурсы во фреймворке Laravel
30:04
Просмотров 4,5 тыс.
07 - The Queue Component in #laravel
12:44
Просмотров 37 тыс.
Как тестировать Laravel?
1:02:47
Просмотров 17 тыс.
Simple Flower Syrup @SpicyMoustache
00:32
Просмотров 667 тыс.