Aсинхронный PHP / Антон Шабовта (Onliner)
HTML-код
- Опубликовано: 16 июл 2020
- Приглашаем на конференцию Saint HighLoad++ 2024, которая пройдет 24 и 25 июня в Санкт-Петербурге!
Программа, подробности и билеты по ссылке: vk.cc/cuyIqx
--------
--------
Презентация и тезисы:
phprussia.ru/2019/abstracts/5013
* Разбираемся в блокирующих и неблокирующих операциях в PHP.
* Структура Event Loop и асинхронных примитивов, таких как Promise изнутри.
* Генераторы как способ управления потоком исполнения программы.
* Современные подходы реализации кооперативной многозадачности в PHP.
* Что нас ждет в ext-async, AMPHP 3 и PHP 8.
--------
Нашли ошибку в видео? Пишите нам на support@ontico.ru
Вывод: лучше дальше пользоваться старым добрым RabbitMQ и добавлять асинхронщину только там где нужно)
А ссылку на статью о которой идет речь на 44:22 поделитесь?
nikic.github.io/2012/12/22/Cooperative-multitasking-using-coroutines-in-PHP.html наверное речь об этом. Есть русская версия на хабре, если не ошибаюсь
"...Интерпретатор, интерпретирует, т.е построчно(!) исполняет каждую строчку кода" - в принципе самое короткое видео могло бы получится, там не нужно ничего дальше:)
Не совсем понятно зачем надо мучатся с event loop если mysql и postgres поддерживают асинхронные запросы
Да в php можно применять такие манёвры, если дело касается допустим рассылки по разным базам и т.д. Где действительно от этого будет профит. Но в случаи создания сервера на php, это полный треш, разве что запускать для решение временных(коротко живущих) задач. Вся эта идея улетает в пропасть если работать на одном ядре, так как nginx тоже использует event-loop и шаблон реактор, а это само за себя уже говорит что помимо бекенда который будет перезаписывать кеши процессора, будет ещё nginx использовать кеш и само по себе такое использование с nginx на мой взгляд не эффективно. Если же несколько ядер тогда ещё можно как-то указать при создании сокета на каком ядре его обрабатывать, тогда можно отделить работу nginx от event-loop-а php и может быть более эффективно чем доверить ос переключать контексты по разным ядрам самостоятельно, нагло перезаписывая кеши друг друга.. P.S. моё скромное мнение (и возможно ошибочное)
Определения не точны. Асинхронность - это костыль в однопоточном javascript, который позволяет хоть как-то оживить фронт. Надо ли это тянуть в php? Нет, не надо. Это не даст ничего, кроме серьёзного снижения читаемости кода. Swoole - это не про асинхронность, а про многопоточность.