#Article
Привет, привет всем любителям PHP! 🎉 Хочу поделиться свежей статьей под названием "Как раскрыть сверхспособности высокопроизводительных очередей для PHP-приложений и не сойти с ума!" 🚀
Знаете, я изучал тему очередей на PHP и обнаружил пару проблемок. Вроде бы все классно, но, честно говоря, PHP не слишком подходит для крутых инфраструктурных штуковин. Такой интерпретируемый характер и блокирующая модель IO могут сильно торомозить их работу Короче это тупо неэффективно. 🤔
И вот однажды один человек подумал, а почему бы не использовать в этом деле Golang? 🔥 Go умеет делать кучу дел одновременно (горутины), управляет ресурсами как настоящий профи, работает быстро как молния и еще и сокетами управляет на уровне близком к железу. Просто магия!
Итак, в моей статье я рассказываю о супер-мега-крутых очередях на RoadRunner (о плагине "Jobs"). 💪 Там PHP и Go нашли свою любовь и объединились в команду. Теперь PHP-разработчики могут наслаждаться всеми плюшками обоих языков и создавать высокопроизводительниые шедевры!
Но это еще не все, фартаны! Также, я раскрываю стратегии использования очередей. Мы будем погружаться в мир загадочных штуковин, как "Фанатик с запоздалыми задачами", "Король бесконечных повторений" и "Независимый ковбой с ретрайами". Это как сказка, только в мире программирования!
Так что, прямо сейчас отправляйтесь по ссылочке https://butschster.medium.com/unleashing-the-power-of-high-performance-queue-services-for-php-applications-dcc5c1426511! 😄
#PHP + #Go = Unstoppable! 💪
Жду ваших комментариев и обсуждений! 🙌
P.s. Мы как-то побенчили джобы разных реализаций. Оказалось, что очереди в отделении почты разгребаются быстрее, чем в Laravel.
Привет, привет всем любителям PHP! 🎉 Хочу поделиться свежей статьей под названием "Как раскрыть сверхспособности высокопроизводительных очередей для PHP-приложений и не сойти с ума!" 🚀
Знаете, я изучал тему очередей на PHP и обнаружил пару проблемок. Вроде бы все классно, но, честно говоря, PHP не слишком подходит для крутых инфраструктурных штуковин. Такой интерпретируемый характер и блокирующая модель IO могут сильно торомозить их работу Короче это тупо неэффективно. 🤔
И вот однажды один человек подумал, а почему бы не использовать в этом деле Golang? 🔥 Go умеет делать кучу дел одновременно (горутины), управляет ресурсами как настоящий профи, работает быстро как молния и еще и сокетами управляет на уровне близком к железу. Просто магия!
Итак, в моей статье я рассказываю о супер-мега-крутых очередях на RoadRunner (о плагине "Jobs"). 💪 Там PHP и Go нашли свою любовь и объединились в команду. Теперь PHP-разработчики могут наслаждаться всеми плюшками обоих языков и создавать высокопроизводительниые шедевры!
Но это еще не все, фартаны! Также, я раскрываю стратегии использования очередей. Мы будем погружаться в мир загадочных штуковин, как "Фанатик с запоздалыми задачами", "Король бесконечных повторений" и "Независимый ковбой с ретрайами". Это как сказка, только в мире программирования!
Так что, прямо сейчас отправляйтесь по ссылочке https://butschster.medium.com/unleashing-the-power-of-high-performance-queue-services-for-php-applications-dcc5c1426511! 😄
#PHP + #Go = Unstoppable! 💪
Жду ваших комментариев и обсуждений! 🙌
P.s. Мы как-то побенчили джобы разных реализаций. Оказалось, что очереди в отделении почты разгребаются быстрее, чем в Laravel.
Medium
Unleashing the Power of High Performance Queue Services for PHP applications.
In the modern era of PHP development, the efficient handling of asynchronous tasks and managing heavy loads has become a game-changer.
🔥2🤯2💩1
#Article #Типизация #php
Всем нравятся Constructor Property Promotion, не так ли?
☝️ эти фрагменты кода эквивалентны 👇
Но не эквивалентны этому:
Разница в наличии значений по умолчанию у свойств.
Теперь попробуем создать объекты из обоих вариантов через рефлексию без использования конструктора.
https://3v4l.org/0tLcM
Если у свойства нет значения по умолчанию, то оно будет неинициализированным.
Такой способ создания объектов в обход конструктора широко используется под капотом многих библиотек, не только тех, которые используют
И иногда это стоит учитывать при работе с классами, которые будут проходить через гидрацию или демаршализацию. У меня такое уже выстреливало 😳.
А если ты счастливый пользователь Cycle ORM, то я рекомендую вообще закрывать конструкторы сущностей (делать пустой приватный конструктор) и вместо этого писать фабрики.
Всем нравятся Constructor Property Promotion, не так ли?
final class Foo {
public function __construct(
public bool $bar = false,
public array $baz = [],
) { }
}
☝️ эти фрагменты кода эквивалентны 👇
final class Foo {
public bool $bar;
public array $baz;
public function __construct(
bool $bar = false,
array $baz = [],
) {
$this->bar = $bar;
$this->baz = $baz;
}
}
Но не эквивалентны этому:
final class Foo {
public bool $bar = false;
public array $baz = [];
public function __construct(
bool $bar = false,
array $baz = [],
) {
$this->bar = $bar;
$this->baz = $baz;
}
}
Разница в наличии значений по умолчанию у свойств.
Теперь попробуем создать объекты из обоих вариантов через рефлексию без использования конструктора.
https://3v4l.org/0tLcM
object(Foo)#3 (0) { ["bar"]=> uninitialized(bool) ["baz"]=> uninitialized(array) }
object(Foo)#3 (2) { ["bar"]=> bool(false) ["baz"]=> array(0) { } }
Если у свойства нет значения по умолчанию, то оно будет неинициализированным.
Такой способ создания объектов в обход конструктора широко используется под капотом многих библиотек, не только тех, которые используют
doctrine/instantiator
.И иногда это стоит учитывать при работе с классами, которые будут проходить через гидрацию или демаршализацию. У меня такое уже выстреливало 😳.
А если ты счастливый пользователь Cycle ORM, то я рекомендую вообще закрывать конструкторы сущностей (делать пустой приватный конструктор) и вместо этого писать фабрики.
🔥9🤔6
#ВредныеСоветы #Типизация #php
Как сломать типизацию:
https://3v4l.org/nTogS
Как сломать
https://3v4l.org/gSWFF
Также не забываем про пакет
Что там ещё нам мешает писать код по своим правилам?
Как сломать типизацию:
https://3v4l.org/nTogS
Как сломать
readonly
(и типизацию):https://3v4l.org/gSWFF
Также не забываем про пакет
unfinalize
.Что там ещё нам мешает писать код по своим правилам?
3v4l.org
Online PHP editor | output for nTogS
Run your php code online; get statistics, vld output and compare output from all versions.
🤯11😁6💩2
В блоге Виктора (который из Yii 3 Core) вышла позитивная заметка про Buggregator.
Получать обратную связь — хорошо. А получать хорошую обратную связь — ещё лучше.
Вы используете Buggregator? Поделитесь в комментариях обратной связью 💖
Напишите, как используете, чего не хватает, на что сделать упор.
Хотели бы, чтобы мы писали здесь о багри больше (не маркетинговый буллшит, а про фичи, кейсы, размышления и прочее)? — если да — ставьте🖼️
Получать обратную связь — хорошо. А получать хорошую обратную связь — ещё лучше.
Вы используете Buggregator? Поделитесь в комментариях обратной связью 💖
Напишите, как используете, чего не хватает, на что сделать упор.
Хотели бы, чтобы мы писали здесь о багри больше (не маркетинговый буллшит, а про фичи, кейсы, размышления и прочее)? — если да — ставьте
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Viktorprogger
Профайлинг с XHProf | #development #php #profiling #xhprof
Некоторое время назад я сравнивал различные профайлеры: надо посмотреть, что сколько времени кушает именно на проде. Остановился на XHProf по нескольким причинам: это бесплатное self hosted решение…
Некоторое время назад я сравнивал различные профайлеры: надо посмотреть, что сколько времени кушает именно на проде. Остановился на XHProf по нескольким причинам: это бесплатное self hosted решение…
Микродайджест багри-видосиков:
👉 На нашем канале публикуются записи лайвкод-стримов Павла на тему рефакторинга SMTP в Buggregator: две части уже в релизе, ещё две на подходе.
📱 Часть 1
📱 Часть 2
👉 Сегодня и завтра Павел планирует на стримить рефакторинг вебхуков багри и переписывание джобов на Symfony Messenger в связке с RoadRunner.
👉 В очередной раз порадовал канал CutCode: в этот раз Данил сделал то, чего мы не смогли сделать сами — профессионально обозрел #Buggregator.
Встречаем лучший существующий обзор Багрегатора:
📱 Смотреть
👉 Кстати, зацените наш промо-ролик на английском. #ChatGPT очень старался.
📱 Заценить
👉 На нашем канале публикуются записи лайвкод-стримов Павла на тему рефакторинга SMTP в Buggregator: две части уже в релизе, ещё две на подходе.
👉 Сегодня и завтра Павел планирует на стримить рефакторинг вебхуков багри и переписывание джобов на Symfony Messenger в связке с RoadRunner.
👉 В очередной раз порадовал канал CutCode: в этот раз Данил сделал то, чего мы не смогли сделать сами — профессионально обозрел #Buggregator.
Встречаем лучший существующий обзор Багрегатора:
👉 Кстати, зацените наш промо-ролик на английском. #ChatGPT очень старался.
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Buggregator introduction
#buggregator #php #docker
🔥12
Сегодня планируется очередной стрим на канале по Buggregator и разработке. Продолжение рефакторинга вебхуков https://youtube.com/live/UqHMUSAfZa0
YouTube
Buggregator livecoding - Рефакторинг Webhooks и покрываем тестами (Часть 2 из 2)
На стримах я пишу код, делаю рефакторинг кода, доабвляю новые фичи и пишу тесты для Багри.
#php #buggregator #spiral #development
#php #buggregator #spiral #development
🔥8 4
Небольшой обзор всякой фигни вокруг PHP фреймворков и опенсорса с жиром и шутками ниже пояса 🚽
Notion
Telegraph (с поехавшими ссылками)
#Article #PHP #МыслиВслух
Notion
Telegraph (с поехавшими ссылками)
#Article #PHP #МыслиВслух
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegraph
В мире PHP #0
Продвинутая рефлексия Symfony посмотрели на типун Удальцова и захотели такой же. Получился компонент типунфъ в сдержанном и консервативном стиле от дедов. Хочешь не хочешь, а эта херня получит распространение. Кирилл Несмеянов, кстати, подсуетился раньше…
🔥32 7 5🤔1
Товарищи. Валентин Удальцов прорубает окно в #PHP SRC.
9 мая запущено голосование за его RFC. Будьте уверены, большинство голосов будут за него!
После столь значимого события мы, сообщество PHP, незамедлительно воспользуемся протоптанным маршрутом и войдём в историю, как новаторы.
Для реализации возможности повлиять на будущее PHP нужно зайти на канал @phpyh, тегнуть там @vudaltsov и попросить сделать всего-лишь тоже самое, что и с первым RFC, только с новой мега-киллер-фичей (ради светлого будущего PHP ему будет не сложно).
Вот варианты киллер-фичей:
- Неблокирующий IO во всём PHP
- Сахарок async await, EventLoop и порутины
- Виртуальные интерфейсы
- Трейты с ограниченным скопом
-
- Дженерики
- Внедрение Typhoon на уровне ядра
- Добавить в ядро функцию
- Добавить функцию
Только представьте, какое будущее нас ждёт!
9 мая запущено голосование за его RFC. Будьте уверены, большинство голосов будут за него!
После столь значимого события мы, сообщество PHP, незамедлительно воспользуемся протоптанным маршрутом и войдём в историю, как новаторы.
Для реализации возможности повлиять на будущее PHP нужно зайти на канал @phpyh, тегнуть там @vudaltsov и попросить сделать всего-лишь тоже самое, что и с первым RFC, только с новой мега-киллер-фичей (ради светлого будущего PHP ему будет не сложно).
Вот варианты киллер-фичей:
- Неблокирующий IO во всём PHP
- Сахарок async await, EventLoop и порутины
- Виртуальные интерфейсы
- Трейты с ограниченным скопом
-
implements
внутри трейтов- Дженерики
- Внедрение Typhoon на уровне ядра
- Добавить в ядро функцию
fart()
, которая будет воспроизводить звук пердежа- Добавить функцию
get_objects()
, которая вернёт WeakMap
всех созданных PHP объектов.Только представьте, какое будущее нас ждёт!
😁28 14💊6 4🔥3
Telegram
Moz Vkusni in PHP Fart Time Chat
Пора и нам подумать о #PHP. Начнём прямо сегодня, в 19:00МСК.
В гостях Антон Титов. Поговорим про будущее PHP.
https://youtube.com/live/B2LJDGEsPYk?feature=share
В гостях Антон Титов. Поговорим про будущее PHP.
https://youtube.com/live/B2LJDGEsPYk?feature=share
🔥20
Forwarded from Pavel Buchnev
🕘 В 21:00 по Мск запускаем стрим. Пишем PHP микросервисы с GRPC на Spiral + RoadRunner
https://www.youtube.com/watch?v=En0InnKsryA
https://www.youtube.com/watch?v=En0InnKsryA
YouTube
Как создать PHP микросервисы с GRPC: Spiral и RoadRunner | Полное руководство
В этом стриме мы подробно рассмотрим создание PHP микросервисов с использованием gRPC, Spiral и RoadRunner. Пройдемся по всему процессу от настройки до реализации:
Код проекта: https://github.com/php-fart/grpc-microservices
0:00 Начинаем
4:35 Что такое…
Код проекта: https://github.com/php-fart/grpc-microservices
0:00 Начинаем
4:35 Что такое…
🔥18 2 2💊1
Forwarded from Pavel Buchnev
🕘 В 21:00 по Мск продолжаем стрим по GRPC
План такой:
1. Создать каркас приложения
2. Настройка БД
3. Регистрация, Авторизация пользователей
4. Docker compose
5. Если останется время, то OpenTelemetry
https://youtube.com/live/i0Bb9U7SHX4?feature=share
План такой:
1. Создать каркас приложения
2. Настройка БД
3. Регистрация, Авторизация пользователей
4. Docker compose
5. Если останется время, то OpenTelemetry
https://youtube.com/live/i0Bb9U7SHX4?feature=share
YouTube
Как создать PHP микросервисы с GRPC: Docker, Interceptors, OpenTelemetry | Часть 2
Присоединяйтесь к нам во второй части нашего стрима, где мы продолжаем разработку PHP микросервисов с GRPC. В этом эпизоде мы фокусируемся на следующем:
📌 Основные темы:
- Docker окружение: настройка PHP, баз данных, OpenTelemetry, и Buggregator.
- Интерсепторы:…
📌 Основные темы:
- Docker окружение: настройка PHP, баз данных, OpenTelemetry, и Buggregator.
- Интерсепторы:…
🔥13 9