Для того, чтобы не ломать привычный поток разработки на PHP :) Не нужно изучать новые подходы и разруливать целый класс новых проблем и нюансов асинхронного кода — ведь все летает и без этого. Но если хочется бОльшего именно в рамках PHP — да, Swoole интересный вариант. Но я программировал в такой парадигме на Go / Node.js и мне не очень понравилось.
Я старался провести максимально честное сравнение и выпилил из Laravel / Symfony все бандлы, которые вообще можно было выпилить. Буду рад, если посмотрите и подскажете, как их еще можно ускорить, я выложил бенчмарки в репозиторий:
А есть у Spiral какие-то микросборки для тестирования? Не смог собрать для него урезанную версию без ORM и прочих плюшек, а хотелось бы для сравнения github.com/gotzmann/benchmarks
Результаты отрыва получились еще более впечатляющие :) Интересно понять, связано ли это на самом деле с конфигурированием, или все-таки workerman позволяет ускоряться до нереальных показателей.
Ну для реальной работы у меня в приложении помимо Comet подключен Eloquent, Monolog и миграция базы на Phinx. Тащить все это в сам фреймворк не вижу смысла :) У других разработчиков могут быть собственные предпочтения по выбору библиотек.
Приложение на Comet я запускаю прямо из командной строки Windows/ Linux и для его работы не требуется ни RR, ни Nginx или FPM — считаю, это огромное преимущество. Зачем RR, если нативное приложение на PHP работает быстрее без обвязки?
Для Go был мощный корпоративный фреймворк для генерации 90% бойлерплейта по сваггер-спеке. Аналогичного по возможностям в опен-сорс не нашлось, а писать вручную типичный код на го для валидации и перекладки данных между JSON и базой данных — такое себе удовольствие. PHP более краткий и мощный. Для Python есть Connexion от Zalando — но увы, это не мой язык :)
Спасибо за инсайты, настройки Nginx/FPM брал как раз на Techempower, но на результаты мог повлиять факт тестов из докер-контейнеров на платформе Windows. Надо будет прогнать их на более приближенном к реалиям окружении Linux.
Кусочек конфига, определяющий количество воркеров:
Насколько я знаю, opcache по умолчанию включен во всех дистрибутивах PHP7. Но проверил на всякий случай php.ini в докер-контейнере на базе Ubuntu 19.10 и PHP 7.4, в котором тестирую все фреймворки — как и ожидалось — opcache.enable=1
Спасибо :) Это не демка Slim, просто Comet «магически» отправляет все не определенные в классе вызовы внутреннему инстансу приложения Slim — поэтому код базовых примеров выглядит один в один.
Как сказано в описании проекта на GitHub, Comet — это гибрид Slim и Workerman, приправленный собственной магией, которой будет больше в следующих релизах :)
Предзагрузка помогает, но не настолько существенно, как хотелось бы. Badoo на Хабре приводит следующие цифры: «переход c PHP 7.2 на PHP 7.4 даёт +10% к производительности на нашем endpoint’е, а preload даёт ещё 10% сверху».
В следующих версиях Comet планирую тоже поиграться с предзагрузкой и добавить более быстрые имплементации PSR-7 компонентов.
Надо посмотреть поближе, рекомендовали Phalcon Micro. Несколько лет назад у меня с ним были проблемы (то ли не мог собрать пакет, то ли он вообще не поддерживал разработку на Windows-хостах), поэтому в этот раз я как-то прошел совсем мимо.
Если не считать composer.json — так и есть :) Пока не решил, какие части фреймворка стоит включить в базовой поставке. Думаю, расширенные версии Request / Response, миддлваре авторизации и средства миграции БД пригодятся всем пользователям.
Это зависит от настроек сервера Comet — количества доступных для работы воркеров. Длинные блокирующие операции выжирают пул доступных воркеров и заставляют новые запросы ждать своей очереди. Звучит не очень в теории, но на практике даже под нагрузкой Comet не проигрывает в производительности ни серверам на Go, ни проектам на NodeJS, если блокирующим фактором выступает, например, база данных.
github.com/gotzmann/benchmarks
Провел сравнительные тесты на машине Hetzner и разница между Comet и остальными фреймворками получилась еще более внушительной.
github.com/gotzmann/benchmarks
Результаты отрыва получились еще более впечатляющие :) Интересно понять, связано ли это на самом деле с конфигурированием, или все-таки workerman позволяет ускоряться до нереальных показателей.
habr.com/ru/post/501722
Кусочек конфига, определяющий количество воркеров:
Как сказано в описании проекта на GitHub, Comet — это гибрид Slim и Workerman, приправленный собственной магией, которой будет больше в следующих релизах :)
В следующих версиях Comet планирую тоже поиграться с предзагрузкой и добавить более быстрые имплементации PSR-7 компонентов.