совсем обычное Laravel/Symfony приложение под swoole или RoadRunner или ReactPHP - становится ли моё приложение «асинхронным»? В моём Laravel/Symfony коде нет ни коллбэков, ни промисов (которые обычно есть в асинхронных программах). А что происходит с традиционно блокирующими вызовами ввода-вывода при работе под swoole или RoadRunner - они все как-то подменяются на неблокирующие, благодаря чему event loop в swoole/RoadRunner может крутиться?
нет, не становится
я явно никогда не допишу свою статью... вот кусочек: Важное уточнение: В сети гуляет множество примеров из серии «берём ReacPHP и ускоряем Laravel в N раз». Важно понимать разницу между демонизацией приложения (и, как следствие, экономии времени на бутстрапинге приложения) и реальной многозадачностью. В случае, если вам надо просто убрать накладные расходы на запуск приложения, то не надо брать Swoole и пытаться впихнуть невпихуемое. Для этих целей есть специальные проекты, например, RoadRunner. После подключения которого ваше приложение не начнёт работать асинхронно. Вы лишь уберёте накладные расходы на поднятие приложения. Если вы хотите писать cuncurrency код, придётся запастись терпением и изменить ряд привычек. Вы не сможете больше пользоваться большинством привычных библиотек, которые для работы используют какие-либо блокирующие вызовы (echo, curl, pdo, mysqli, file, etc). в свуле можно при некоторой сноровке юзать блокирующие штуки, но цена тоже не самая дешёвая.
Посмотри как минимум жизненный цикл laravel/symfony, если не смотрел сорцы. Никакого буста у этих фреймов не будет, если вручную не переписать (тогда будет, но мало)
Обсуждают сегодня