PHP Fart Time
1.79K subscribers
89 photos
4 videos
2 files
182 links
Привет, фартаны!

Дурачимся, пилим OpenSource и рассказываем про пердовые технологии в php.

Авторы контента: @roxblnfk и @butschster
Download Telegram
This media is not supported in the widget
VIEW IN TELEGRAM
😁21112
PHP Fart Time
Внимание, конкурс!

Кто первый угадает, из какого фильма использовалась звуковая дорожка в этой истории 👆, тот получит проходку на подлодку!



Двое получили свои проходки.
Звуковая дорожка взята из фильма Deadpool 2 (вот этот момент)
1
Новости дня

!> Вышел PhpStorm 2025.1
Значительные улучшения в AI Assistant (например, можно подключить локальную LM Studio, поддержка .aiignore), обновлён новый терминал (стал более новым), мелкие свистоперделки и мешок багов. Всё, как мы любим.
Поддержка PHP 8.4 не заявлена.

!> Подвалило обновление на RFC True Async. RFC стал проще, добавлено больше примеров.

!> Напоминаю, завтра будет Пыхап №3. Остались ещё несколько билетов.

!> Подлодка №6 уже открылась. Попасть на борт можно через Глеба.

!> После статьи про dload, количество звёзд пакета увеличилось на 0. Ни на что не намекаю, просто спасибо за поддержку 🍺
419🔥8💊4💩1
С уходящей Пасхой, Фартаны! 🐣
Надеюсь, вы сегодня отлично провели время — наелись куличей, накрасили яиц и устроили настоящую битву яиц!
Пусть ваши яйца были крепче всех и вышли из боя с гордостью! 💪🥚💥
До встречи на следующем фарт-празднике!
7🔥1914🤮2
Вчера 6 фартанов травили разные истории на несанкционированном after-party подлодки (random beer).

Одна из историй была про то, как некий разработчик паровозик смог вытащить конфиги из WordPress в ENV переменные. Это сильно облегчило жизнь команды, даже несмотря на то, что из-за несовместимости с ядром WP официальные фиксы пришлось докидывать руками в свой форк.

На днях объявился ещё один паровозик, который смог запустить gRPC с Laravel Octane.
На самом деле не знаю, на сколько сложно это было и насколько концепт выглядит рабочим. Я не сомневаюсь, что, изрядно извернувшись, можно на Laravel делать десктопны приложения, запускать gRPC, Temporal, вертеть корутины в асинке..., но зачем?

А вы тоже — паровозик, который смог?
😁21🔥4💊3
Forwarded from Igor Markin
😁50🔥1811
Сегодня последний день подлодки #6. Вечером будет подведение итогов, афтепати и всё.

Неделя началась с общих практик по оптимизации: ставьте RR, включайте GC, настраивайте кеш и индексы в БД с умом (как шеф-повар).
Сорян, что так коротко. Доклады были интересные, просто не совсем актуальные для меня.

Но со среды началось то, что мне ближе по духу:
🍺 Более тонкий тюнинг RoadRunner от Ярослава Тарасова из SkyEng.
После доклада мы ещё час сидели и перетирали подкапотные нюансы, мифы и рекомендации относительно RR.
Если ваша компания тоже сэкономила 30% на железе от перехода на RR, то пните там кого положено, чтобы хоть что-то задонатили в опенсорс, ведь RR не приносит прибыли разработчикам.
🍺 Асинхронщина и промисы от Дмитрия Елисеева.
Т.к. с асинками и промисами работаю часто, то особой когнитивной нагрузки я не испытал. Но вот ПК подлодки, похоже, слушали максимально внимательно и заснули уже после первого часа. Через 3 часа, когда Дима закончил, они проснулись, размотали парочку накопившихся вопросов и пошли спать дальше.
До голосового чата даже не дошло, так что мои вбросы улетели в помойку. Зато за время выступления накинул хотфикс в репозиторий из доклада.
🍺 Производительность Ensi (Open Source e-commerce) от Павла Толпыго.
Было интересно послушать про битрикс на Laravel да ещё и на Swoole. Доклад флэшбекнул во времена студенчества, когда приходилось писать по-научному: чем замудрёнее, тем лучше; побольше отглагольных существительных в страдательном залоге. Мой размягчившийся мозг был к этому не готов, поэтому зашло только со второго раза.
По-прежнему жду от Павла ответ на вопрос "не тянет ли Laravel их вниз?".
🍺 Неочевидные оптимизации опкодов в PHP от Дмитрия Кириллова.
Доклад был отвалом башки у всех присутствующих. Дмитрий на опкодах показал, как можно ускорить PHP код используя типизацию и JIT по максимуму. В бенчах PHP смог обойти C со стоковыми настройками компилятора.

Обычно докладчики остаются после окончания записи и отвечают на какие-то вопросы. Эти секции докладов часто самые интересные. Минимум поэтому лучше участвовать в онлайне, а не ждать записей. Но тут Дмитрий вышел моментально, как прекратилась запись. Так что мой вопрос остался без ответа:

Всегда пишу код компактно. Вместо этого:

if ($i < 10) {
$this->doSomething();
}

предпочитаю вот это:

$i < 10 and $this->doSomething();

Читается лучше, но опкодов в 2 раза больше. Как с этим жить?

Может вы знаете, что на это ответить?

Гвоздём этой подлодки стали сходки 🍻 PHP Random Beer 🍻! Мы самоорганизовались и после вечерних докладов сидели до часу-двух ночи, болтая за всю фигню в этом мире.

Подлодка подплывает к концу.
Думаю, надо сделать такие сходки #RandomBeer на регулярной основе. Что вы думаете об этом, будете участвовать?
6🔥2410
Встречаем подлодочный доклад от Дмитрия Кириллова, забравшего приз зрительских симпатий!
Неочевидные оптимизации опкодов в PHP

Доклад был отвалом башки у всех присутствующих. Дмитрий на опкодах показал, как можно ускорить PHP код используя типизацию и JIT по максимуму. В бенчах PHP смог обойти C со стоковыми настройками компилятора.


Приятного просмотра!

Размещено с согласия Дмитрия
6🔥408
Forwarded from Igor Markin
😁299
PHP Fart Time
изрядно извернувшись, можно на Laravel делать десктопны приложения, запускать gRPC, Temporal, вертеть корутины в асинке..., но зачем?
Недавно был пост про паровозиков и хлебушек.

Кто же знал, что некоторые воспримут это как инструкцию (или вызов)?

Встречаем очередного паровозика Павла, который смог запустить не только gRPC на Laravel, но также RoadRunner Jobs и #Temporal.

Сегодня на канале CutCode пройдёт стрим на эту тему. Присоединяйтесь!



Ссылки со стрима:
- Temporal PHP SDK (поставить звезду)
- Laravel Bridge (поставить звезду)
- Podlodka #404 -- Системы эффектов в языках программирования
- Лайв-кодинг: Нет ничего более постоянного, чем Temporal (слайды)
🔥2173
Spatie зарегистрировали домен php-operators.com, чтобы просто разместить там все операторы PHP.

Не знаю зачем. Скорее всего чтобы материал из документации усваивался лучше, ведь у Spatie с пониманием операторов большие проблемы: даже в этой выжимке хлопцы записали логические операторы в операторы сравнения, а про тернарники вообще забыли (уже исправили по фидбеку с реддита). Может ещё почитают доку и про массивы что добавят. Или даже кто-то и про разницу арифметического и логического сдвига вправо вспомнит.

Пишу я это не только чтобы похейтить. Страничка приятная, но надо было сделать её в документации PHP и сразу нормально, а не "делегировать мумбайцам" с последующим размещением на отдельном одностраничнике (чтобы классов побольше набрать?).
35🔥5
Что за прекрасный день!

Такое хорошее настроение, что токсичность так и плещет через край!

Самое время для пива и хейто-стрима! 19:30 МСК
Посмотрим на laravel-workflow, затем на Temporal, затем снова на laravel-workflow.

Со слов Павла:
Будут ваоркфлоу, бемчи темпрорал, Иигорь, сложные воркфолоу, маленькие воркфлоу, про саги, вопросы-ответы...
5🔥217💊6😁2
This media is not supported in your browser
VIEW IN TELEGRAM
большой-маленький воркфлоу на затравку
🔥16🤯8
Live stream started
Live stream finished (5 hours)
У нас было уже несколько встреч #RandomBeer. Это как Beer PHP, только онлайн.

Последняя такая встреча была неделю назад.
На ней мы смотрели, как Павел пытается запустить Wippy gen. 2, сравнивали, как работают разные LLM, просто болтали и под конец забабахали рандомный доклад про PSR фреймворки и области видимости контейнера. Вживую разобрали кейс розлива пива в хлебном контексте на примере Symfony, Spiral и Laravel 🤯
Думаю, всем понравилось.

С сегодняшнего дня у многих аж 4 выходных подряд, а что это значит?
Правильно! Надо снова идти в онлайн!

Прыгайте в чат и голосуйте, кто в теме.
🔥172
Так, фартаны. Токсик-среда. И новости подходящие :)

Пых: FrankenPHP переходит под крыло PHP!
Новость в блоге Саши Макарова

Не то, что это неожиданность, но давайте обсудим похейтим.

Какую проблему в PHP решали?

Пыхе нужен свой сервер со всеми современными свистоперделками (TLS, WebSockets, Early Hints, HTTP 1, 2, 3, 4g, 5g...). По понятным причинам FPM, как и встроенный dev-сервер, тут не подходят. Первый тупо менеджит воркеры и требует HTTP сервер типа nginx/angie, а второй не имеет свистоперделок.

Взяли франкен из-за Caddy. Получили свой сервер? Вообще, нет.
По мне, получили этакий костыль, который теперь будет отжирать внимание разработчиков ядра и, возможно, средства из фонда. Я бы не назвал это своим сервером. Просто нестабильный бридж на Caddy.
Знаю, что @samdark постоянно говорит, что у него франкен работает уже год, но не в воркер-режиме (т.е. как FPM), но стабильно. Если чутка подкопаться, то выяснится, что были кейсы с сегфолтами или отвалилось 50% статики. В общем тут вопрос терминологии:
- потерял запросы на сегфолте — нормально!
- "кадди отлетает наглухо при любом фризе скрипта" — нормально!
- отвалилась статика — тоже нормально!
Самый смак в том, что ты не можешь на это повлиять. Ведь причина не в высокой нагрузке, не в настройке окружения, не в ошибке в коде приложения. Тупо нестабильный сервер.

Какие были альтернативы?

Решил бы RoadRunner проблему? Нет. Он как бы в стороне, никому не мешает, и нет технической необходимости тащить его под крыло PHP, т.к. он не прибит к пыхе гвоздями.
Забавно, что RoadRunner — language-агностик решение, но решает проблемы именно пыхи.
Да и репозиториев много, переносить долго. В случае RR лучшим решением было бы сотрудничество или спонсирование, т.к. RR существует только в интересах PHP.

Если бы Swoole стал официальной частью пыхи, было бы интереснее. Родной сишный стек. Интероп нулевой. И RFC на TrueAsync был бы максимально в тему, т.к. половина костылей внутри свули отвалилась бы.
Походу, не договорились. Переход под крыло PHP означал бы и смещение контроля в сторону PHP. А там разброд: за RFC голосуют не только спецы, а вообще кто попало. Некоторые из них даже на PHP не пишут. Я бы на месте китайцев тоже отказался 🤔

Летом-осенью должно выйти решение от Angie (здесь могла быть Rapira) — такая же тесная интеграция в пыху, как франкен, но с более тонким и стабильным интеропом (не cgo). Но это часть продукта angie и под крыло PHP оно точно не ушло бы, ведь на нём скорее всего будет какая-то монетизация.
Выбирая себе сервер, между франкеном и Angie я бы выбрал Angie.

Выводы

Вот и получилось, что взяли на безрыбье. Зачем, если проблему не решили?
Набрать классов, набрать бета-тестеров, набрать спонсоров или из жалости.
Было бы неплохо, если бы Дунглас тащил франкен не в одно рыло, но я сомневаюсь, что это изменится.

Как итог: Дунглас становится лучшим инжектором костылей 21 века!
О да: Mercure, Франкен и воркараунды для файберов... да ещё и продавил это всё в массы.
Мой кумир! 😐
Please open Telegram to view this post
VIEW IN TELEGRAM
35🔥119😁6💊4💩3
Походу, мы тут раздули из лягушки слона.

Теперь давайте посмотрим на ситуацию с точки зрения Романа Пронского. Это не прямые цитаты а моя интерпретация по итогу общения.

💊 Место PHP в этом мире

Начнём с того, что маркетинг — это крайне необходимая вещь для PHP и одна из важнейших задач фонда.
Посудите сами: те кто используют PHP сейчас, в целом, продуктивны и счастливы.
Но в глобальном тех-мире PHP всё равно воспринимают на уровне 2005 года.
Перед фондом и всем PHеловечеством стоит сложная миссия: ломать стены и доносить до консервативных умов истину, менять направление общественного IT сознания, думающего по инерции, что PHP мёртв.

Так появилась задача "предоставить WEB сервер в коробке с PHP".
Это снизило бы порог входа для новичков и добавило бы инфоповодов для маркетинга.

Пожелания:
- Сделать это без привлечения большого количества ресурсов.
- Чтобы было всё одним бинарём.
- Маркетинг должен выстрелить, чтобы об этом говорили.

💊 Варианты

Swoole
Не подошел потому что слишком большой и очень сильно меняет работу PHP.
То есть его бы прям ЗАТАСКИВАТЬ пришлось бы.
При этом он не решает проблему бинаря, не решает задачи маркетинга и новичков, т.к. инструмент достаточно нишевый.
К тому же, китайцы оказались не особо заинтересованы в этом, Роман с ними много общался.

Swow
Это типа облегченная версия Swoole, специально сделанная с идеей быть совместимой с ядром PHP. Но те же минусы – не понижает порог входа, нет бинаря, и нет заголовков для маркетинга.

RoadRunner
Рассматривали тоже. Он проиграл скорее из-за того что не видно импульса. То есть он занял свою нишу и ему ок.
Плюс, как я заметил постом выше, он не решал задачу "свой сервер" по факту.

Franken
Опираясь на статистику, показал быстрый рост.
Используется на продакшенах в очень больших и разных компаниях — инфа от Laravel, Tidewawys, Private Packagist, Symfony, и их клиентов.
В общем, на основе статистики и взяли.
Бонус по маркетингу: можно сказать, что втащили Caddy в PHP (или наоборот).

💊 Что дальше?

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

Есть ли риски? Безусловно, да!
Это смелый мув. Но и потенциальные выигрыши тоже хорошие.
Понятно, что это не заменяет FPM, который лучше для большинства проектов.
Но для новичков даёт прекрасный вход: скачал бинарь и запускаешь PHP, типа вамп из коробки.
Может зайдет, может не зайдет. Будем наблюдать.

Бонусом:
- Потенциально открывается ещё один вариант ОФИЦИАЛЬНОЙ поставки PHP с сервером одним бинарем, но это только после RFC. Т.е. чтоб была ссылка скачать сборку на главной php.net.
- Ну и плюс фиксы в коре для SAPI франкена, которые помогут и многим другим проектам.

И, отвечая на вопрос Кирилла: да, есть планы также планы затащить PHP Micro. В принципе, это уже вопрос времени.
PHP Micro даёт возможность упаковать PHP код и интерпретатор в один бинарь. Мы его уже используем в билдах CTX, trap, DLoad, Boson,
Работа проделана большая. В обсуждении участвовало около 60 человек.
Сейчас нужна поддержка сообщества, в т.ч. конструктивная критика.
Надо успеть до того как ИИ всех съест! 😄


---

Обменялись мнениями с Романом и по RoadRunner.

Мои мысли: FrankenPHP активно пушится ларкой и симфонёй, поэтому и грандиозный рост. За RR никто маркетингово не впрягаетя. Счастливые пользователи RR даже к нам не приходят с фидбеком. Если бы кто-то из больших игроков, например PHPF, сказал, что "RR нам бро", то и от RR был бы импульс.
Мои "фи":
- Опираться только на статистику от пиарщиков франкена — не ОК.
- То, что даже не поговорили с командой RR — тоже не ОК.
Ну и, как выяснилось, про рапиру в рабочей группе тоже ничего не знали.

Роман признаёт, что не связаться с нами — упущение.
Видимо перевес статистики был настолько не в пользу RR, что тут и говорить не о чем.
А как бы вы собрали статистику по RoadRunner, учитывая, что он отвязан от Composer, бинарём скачивается редко, в основном собирается в контейнерах и не редко через Velox.
3515🤬6🤔2
Forwarded from Igor Markin
😁55
В PHP 8.5 втащат пайпы из функционального программирования.

Вот такой синтаксис:
$numberOfAdmins = getUsers()
|> fn ($list) => array_filter($list, isAdmin(...))
|> count(...);


В первой итерации в трубу просто передаются коллаблы (callable), в которые первым аргументом передаётся результат предыдущей операции.

Я пока для себя не решил, насколько удобен или всрат синтаксис. С одной стороны можно было бы fn() для пайпов опустить, сделать просто скобочки. С другой, с fn() не страдает консистентность.

Также я ожидал увидеть PFA, чтобы писать поменьше кложур, но мб добавят в следующий раз.
// Без PFA:
$foo
|> bar(...)
|> fn($x) => array_filter($x, fn($v) => $v != 'O');

// С PFA:
$foo
|> bar(...)
|> array_filter(?, fn($v) => $v != 'O');


Кстати, на первом пыхапе был отличный доклад по ФП.
🤮41🔥197💊4🤬11