Очень круто, что ты полностью показал все шаги. Благодаря уроку понятно не только как использовать jobs, но и в какой последовательности они работают с контроллером.
@@ardixq Читаю, уже 3 месяца прошло ))) Время летит беспощадно. У меня даже сценарий к уроку по событиям подготовлен. Вот прям совсем скоро будет ролик. Не всегда получается записать быстро, сейчас все очень плотно по рабочим задачам...
Ура! новое видео на лучшем канале.. как раз передо мной стоит задача создать очереди: 1) проверка 500 сущностей по 5 штук в минуту, запуская все это в 1 час ночи раз в сутки... вот пока не пойму как ограничить "по 5 в минуту" (ограничение стороннего API, откуда буду тянуть данные)
Да очень просто. Перед обработкой следующих 5-ти сущностей запоминай текущее время, после окончания их обработки возьми разницу между текущим временем и временем, которое ты сохранил. Если эта разница меньше 1 минуты, то подожди, если больше 1 минуты, то запускай обработку следующих 5-ти сущностей по такому же принципу.
@@lectoria да, в эту сторону и думал... но вроде в параметрах воркера очередей есть параметр, отвечающий за лимит.... как дойду до джобов - читану документацию подробнее.... пока настраиваю бэкенд (взял Nova для бэкенда, чтоб с формочками не долбаться.. покрывает 90% потребностей админки на УРА"... Спасибо еще раз, Артем, за самые толковые уроки.. я в php недавно (полгода... ).. пришлось в 42 года резко сменить профессию =).. ваши уроки - просто отличные.. а то весь Ютуб полон "индусского кода" либо "Гоша Дударь, C# за 15 минут" 😁
Минус в том что надо очередь вручную запускать через консоль. Не хватает конечно в php цикла событий как в node.js, для того чтобы после выполнения основного стека, сразу или паралельно выполнялось отложеное задание. А не потом когда то там по команде из консоли. У меня например нет доступа к консоли на хостинге и консольные команды запускать не получится, только если из кода. Остается вешать на крон, но крон довольно ресурсоемкая штука, на сколько я помню при ручном запуске весь сайт подвисает. Возможно только если диспатчить сначала а потом сразу вызывать консольную команду следом из контроллера, не вызовет ли это тоже задержку и подвисание.
По сути что-то вроде цикла событий в Laravel как раз реализовано через запуск демона-обработчика очереди. А то, что касается доступа к консоли, то у меня здесь такие рассуждения: Laravel обычно используют не для простых проектов, а для тех, где требуется специфичная логика и длительная поддержка, такие проекты целесообразно хостить не на виртуальном хостинге, а на виртуальном выделенном сервере (VPS/VDS) или на физическом выделенном сервере. Благо, что цены сейчас на VDS не сильно отличаются от виртуального хостинга. Для виртуального хостинга же, как вы верно заметили, есть крон, как правило, к нему хостер дает доступ через веб-интерфейс. Вы можете повесить на крон запуск обработчика очереди каждую минуту и будет почти то же самое. Но это, как мне кажется, больше костыль, чем адекватное решение. Решение диспатчить, а потом сразу вызывать консольную команду - тоже выглядит как костыль. Поэтому, я думаю, лучше потратить пару часов на изучение развертывания сервера на VDS и забыть про виртуальный хостинг навсегда. По настройке VDS у меня есть видео: th-cam.com/video/wKghw1bhzbM/w-d-xo.html
а можно урок про то как работать с базой данных через паттерн репозиторий ? иииииииииии в прцессе работы с данными как использовать атрибут pivot для моделей и включить его в запросы по поиску в RestApi ?
Честно говоря, не думал об этом. Но, как мне видится, вряд ли такое получится, потому что для работы с очередями нужен процесс менеджера очередей, который должен быть постоянно запущен. На шаред хостинге хостер вряд ли такое позволит.
Все зависит от хостинга. Если есть доступ к ssh, то по идее должно получиться. Единственное, что я помню, на виртуальных хостингах стоит ограничение на время запуска процесса, поэтому, возможно, отправить воркер в бэкграунд на 100% не получится. В общем, если хочется без костылей и по-человечески, то лучше хотя бы VPS ))
Приветствую. При отправке письма с вложением возникает такая ошибка - Serialization of 'Illuminate\Http\UploadedFile' is not allowed . Погуглил, пишут, что надо сперва сохранить файл на диске. Но я так и делал. Помогите разобраться
Отправка происходит через Job. А Job делает сериализацию данных. Файл не может быть сериализован. Для того, чтобы корректно обрабатывать такой кейс, перед сериализацией, файл необходимо сохранить на диск, а когда происходит десериализация - забрать его с диска и приаттачить к письму.
Как можно организовать очереди если приложение развернуто на нескольких серверах и нужно чтобы некоторые задачи выполнялись только на тех серверах где в енв к примеру стоит флаг? хостинг на амазоне...
Хороший вопрос. Если на каждом из серверов свой менеджер очередей, то как по мне, достаточно сделать свой базовый Job-класс для всех задач, выполняемых на сервере. И в этом классе реализовать ту самую проверку на наличие флага в очереди. Второй вариант - реализовать свой класс для работы с очередью, который будет наследоваться от базового стандартного класса и точно так же в нем реализовать проверку на наличие этого флага. Если флаг выключен, то просто не отправлять задачу в очередь.
Не совсем. Это похоже на cron, но с гораздо бОлььшими возможностями. CRON просто запускает какой-либо скрипт с определенной периодичностью, а механизм очередей позволяет программно решать, какие задачи отправлять в очередь, с какой задержкой, с каким количеством неудачных попыток и так далее.
Добрый вечер, как можно реализовать такой функционал : Изображение загружаются на определенной странице, далее попадают в очередь обработки в которой происходит наложение фильтра размытия, добавление водяного знака, создание уменьшенной копии изображении, после того как все готово изображению присваивается статус «готово»
Создайте джоб, который будет отправляться в очередь, а уже в джобе делайте с изображением все, что душе угодно. Как пример, можно использовать вот этот пакет для обработки картинок: image.intervention.io/
Эти темы, мне кажется, сродни философским, потому что в них нет на 100% четко детерминированных правил и их можно трактовать по-разному, поэтому я такие темы, честно говоря, даже не рассматривал для видео. У меня обучение программирование происходило эмпирически - практика, практика и еще раз практика, поэтому у меня нет четкого понимания, всегда ли я следую правилам solid, ddd, dto, но когда я иногда про них вспоминаю и перечитываю, о чем это все, понимаю, что в большинстве случаев, особенно в последнее время, я следую этим принципам иногда даже неосознанно :) В общем, это я к тому, что сходу разложить по полочкам эти принципы и объяснить их в видео я не смогу, нужно будет основательно подготовиться. Но за наводку - спасибо. Добавлю в список тем себе.
не совсем понятно. Тема не раскрыта. Запустили с консоли - тупость, так я могу и с базы отправить сам, да и глупость эта штука... Как такое положить в CGI нет, иначе глупость. Есть Демон, окей - а как он работает? Что если сервер перезагружается, сам запустится? Вот больше вопросов, чем сути... Понимаете - есть ракета, на которой Илон полетит на Марс, и Вы такой - "как полетит - ща раскажу, вот сядет и полетит"... Что?
Очень круто, что ты полностью показал все шаги. Благодаря уроку понятно не только как использовать jobs, но и в какой последовательности они работают с контроллером.
Хорошие видео, каких мало в сети. Спасибо
Отличный урок. Большое спасибо.
Спасибо! У вас лучшие ролики по Laravel! Расскажите, пожалуйста, еще про работу с событиями
Про события в одном из следующих роликов обязательно расскажу.
@@lectoria честно?
@@ardixq Читаю, уже 3 месяца прошло ))) Время летит беспощадно. У меня даже сценарий к уроку по событиям подготовлен. Вот прям совсем скоро будет ролик. Не всегда получается записать быстро, сейчас все очень плотно по рабочим задачам...
это было полезно. спасибо)
Спасибо тебе большое за старания... Сделай пожалусто урок по поводу событий и их слушателей что вообще из себя они представляют
Ура! новое видео на лучшем канале.. как раз передо мной стоит задача создать очереди: 1) проверка 500 сущностей по 5 штук в минуту, запуская все это в 1 час ночи раз в сутки... вот пока не пойму как ограничить "по 5 в минуту" (ограничение стороннего API, откуда буду тянуть данные)
Да очень просто. Перед обработкой следующих 5-ти сущностей запоминай текущее время, после окончания их обработки возьми разницу между текущим временем и временем, которое ты сохранил. Если эта разница меньше 1 минуты, то подожди, если больше 1 минуты, то запускай обработку следующих 5-ти сущностей по такому же принципу.
@@lectoria да, в эту сторону и думал... но вроде в параметрах воркера очередей есть параметр, отвечающий за лимит.... как дойду до джобов - читану документацию подробнее.... пока настраиваю бэкенд (взял Nova для бэкенда, чтоб с формочками не долбаться.. покрывает 90% потребностей админки на УРА"... Спасибо еще раз, Артем, за самые толковые уроки.. я в php недавно (полгода... ).. пришлось в 42 года резко сменить профессию =).. ваши уроки - просто отличные.. а то весь Ютуб полон "индусского кода" либо "Гоша Дударь, C# за 15 минут" 😁
спасибо, полезно
Спасибо!
покажи как работать с rabbitmq и другими микросервисами там например на fastapi
Супеeeeeeeeeeeeeeeeeeр!
Минус в том что надо очередь вручную запускать через консоль. Не хватает конечно в php цикла событий как в node.js, для того чтобы после выполнения основного стека, сразу или паралельно выполнялось отложеное задание. А не потом когда то там по команде из консоли. У меня например нет доступа к консоли на хостинге и консольные команды запускать не получится, только если из кода. Остается вешать на крон, но крон довольно ресурсоемкая штука, на сколько я помню при ручном запуске весь сайт подвисает. Возможно только если диспатчить сначала а потом сразу вызывать консольную команду следом из контроллера, не вызовет ли это тоже задержку и подвисание.
По сути что-то вроде цикла событий в Laravel как раз реализовано через запуск демона-обработчика очереди.
А то, что касается доступа к консоли, то у меня здесь такие рассуждения: Laravel обычно используют не для простых проектов, а для тех, где требуется специфичная логика и длительная поддержка, такие проекты целесообразно хостить не на виртуальном хостинге, а на виртуальном выделенном сервере (VPS/VDS) или на физическом выделенном сервере. Благо, что цены сейчас на VDS не сильно отличаются от виртуального хостинга. Для виртуального хостинга же, как вы верно заметили, есть крон, как правило, к нему хостер дает доступ через веб-интерфейс. Вы можете повесить на крон запуск обработчика очереди каждую минуту и будет почти то же самое. Но это, как мне кажется, больше костыль, чем адекватное решение.
Решение диспатчить, а потом сразу вызывать консольную команду - тоже выглядит как костыль. Поэтому, я думаю, лучше потратить пару часов на изучение развертывания сервера на VDS и забыть про виртуальный хостинг навсегда. По настройке VDS у меня есть видео: th-cam.com/video/wKghw1bhzbM/w-d-xo.html
а можно урок про то как работать с базой данных через паттерн репозиторий ?
иииииииииии в прцессе работы с данными как использовать атрибут pivot для моделей и включить его в запросы по поиску в RestApi ?
Подскажите есть ли возможность использовать очереди на шаред хостинге?
Честно говоря, не думал об этом. Но, как мне видится, вряд ли такое получится, потому что для работы с очередями нужен процесс менеджера очередей, который должен быть постоянно запущен. На шаред хостинге хостер вряд ли такое позволит.
Спасибо за урок.
А запускать эти очереди получается на обычном хостинге не выйдет? для этого нужен будет vps?
Все зависит от хостинга. Если есть доступ к ssh, то по идее должно получиться. Единственное, что я помню, на виртуальных хостингах стоит ограничение на время запуска процесса, поэтому, возможно, отправить воркер в бэкграунд на 100% не получится.
В общем, если хочется без костылей и по-человечески, то лучше хотя бы VPS ))
Через cron можно запустить
Приветствую. При отправке письма с вложением возникает такая ошибка - Serialization of 'Illuminate\Http\UploadedFile' is not allowed . Погуглил, пишут, что надо сперва сохранить файл на диске. Но я так и делал. Помогите разобраться
Отправка происходит через Job. А Job делает сериализацию данных. Файл не может быть сериализован. Для того, чтобы корректно обрабатывать такой кейс, перед сериализацией, файл необходимо сохранить на диск, а когда происходит десериализация - забрать его с диска и приаттачить к письму.
@@lectoria Да я и так сначала сохранил его на диске. Может запилишь как-нить ролик про то, как грузить большие файлы на диск с помощью очередей?
Как можно организовать очереди если приложение развернуто на нескольких серверах и нужно чтобы некоторые задачи выполнялись только на тех серверах где в енв к примеру стоит флаг? хостинг на амазоне...
Хороший вопрос. Если на каждом из серверов свой менеджер очередей, то как по мне, достаточно сделать свой базовый Job-класс для всех задач, выполняемых на сервере. И в этом классе реализовать ту самую проверку на наличие флага в очереди.
Второй вариант - реализовать свой класс для работы с очередью, который будет наследоваться от базового стандартного класса и точно так же в нем реализовать проверку на наличие этого флага. Если флаг выключен, то просто не отправлять задачу в очередь.
Спасибо
все классно но музыка на фоне мешает она то громче то тише и ударники , если есть альтернатива поставь какую то мягкую мелодию классику
А поподробней про отлавливатель емейл можно?
Конечно ) Инструмент называется mailhog, бесплатный: github.com/mailhog/MailHog
Я не совсем понял, этот функционал заменяет стандартный CRON на хостинге?
Не совсем. Это похоже на cron, но с гораздо бОлььшими возможностями. CRON просто запускает какой-либо скрипт с определенной периодичностью, а механизм очередей позволяет программно решать, какие задачи отправлять в очередь, с какой задержкой, с каким количеством неудачных попыток и так далее.
Не могли бы Вы добавить видео про широковещание (Broadcast) или хотя бы как делать динамические онлайн-оповещения на сайте?
Есть такое видео в планах. Пока не могу сказать точные даты выхода. Следите за новыми выпусками.
Добрый вечер, как можно реализовать такой функционал : Изображение загружаются на определенной странице, далее попадают в очередь обработки
в которой происходит наложение фильтра размытия, добавление водяного знака, создание
уменьшенной копии изображении, после того как все готово изображению присваивается
статус «готово»
Создайте джоб, который будет отправляться в очередь, а уже в джобе делайте с изображением все, что душе угодно. Как пример, можно использовать вот этот пакет для обработки картинок: image.intervention.io/
Можете рассказать про более продвинутый уровень программирования, солид, ddd, dto, хоть что то из этого) потому что уроков на ютубе нету особо
Эти темы, мне кажется, сродни философским, потому что в них нет на 100% четко детерминированных правил и их можно трактовать по-разному, поэтому я такие темы, честно говоря, даже не рассматривал для видео. У меня обучение программирование происходило эмпирически - практика, практика и еще раз практика, поэтому у меня нет четкого понимания, всегда ли я следую правилам solid, ddd, dto, но когда я иногда про них вспоминаю и перечитываю, о чем это все, понимаю, что в большинстве случаев, особенно в последнее время, я следую этим принципам иногда даже неосознанно :) В общем, это я к тому, что сходу разложить по полочкам эти принципы и объяснить их в видео я не смогу, нужно будет основательно подготовиться. Но за наводку - спасибо. Добавлю в список тем себе.
Канал Тимура Шемсединова глянь
Laravel/horizon на windows не работает ?
Не пробовал его запускать под виндой, так как не работаю в ней вот прям совсем.
Может кто-нибудь из подписчиков что-то ответит?
Ещё урок по теме что такое API
Вот про нюансы и надо бы рассказывать, содержание этого ролика я могу посмотреть в документации за 5 минут
Артем Зернов, это что за приколы? где новые видео?
не совсем понятно. Тема не раскрыта. Запустили с консоли - тупость, так я могу и с базы отправить сам, да и глупость эта штука... Как такое положить в CGI нет, иначе глупость. Есть Демон, окей - а как он работает? Что если сервер перезагружается, сам запустится? Вот больше вопросов, чем сути... Понимаете - есть ракета, на которой Илон полетит на Марс, и Вы такой - "как полетит - ща раскажу, вот сядет и полетит"... Что?