Предисловие

Workerman, высокопроизводительный контейнер PHP-приложений

Что такое Workerman?

Workerman - это открытый высокопроизводительный контейнер для PHP-приложений, разработанный исключительно на PHP.

Workerman не является повторным созданием колеса, это не MVC-фреймворк, а более низкоуровневый и универсальный сервисный фреймворк, с помощью которого вы можете разрабатывать tcp-прокси, прокси для сети, игровые серверы, почтовые серверы, ftp-серверы, а также разрабатывать различные версии redis на PHP, базы данных на PHP, nginx на PHP, php-fpm на PHP и многое другое. Workerman можно считать инновацией в области PHP, освобождающей разработчиков от ограничения использования PHP только для WEB.

На самом деле Workerman похож на nginx на PHP, его ядро также основано на многопоточности + Epoll + неблокирующем вводе-выводе. Каждый процесс Workerman может обслуживать десятки тысяч конкурентных соединений. Поскольку он работает в памяти и не зависит от контейнеров Apache, nginx, php-fpm, он обладает высокой производительностью. Он также поддерживает TCP, UDP, UNIXSOCKET, длинные соединения, а также такие протоколы связи, как Websocket, HTTP, WSS, HTTPS и различные настраиваемые протоколы. Workerman включает в себя множество высокопроизводительных компонентов, таких как таймеры, асинхронные сокет-клиенты, асинхронный Redis, асинхронный Http, асинхронные очереди сообщений и многие другие.

Некоторые области применения Workerman

Workerman отличается от традиционных MVC-фреймворков. Он может использоваться не только для веб-разработки, но и охватывает более широкие области применения, такие как приложения для мгновенного обмена сообщениями, Интернет вещей, игры, управление сервисами, другие серверы или промежуточное ПО, что, безусловно, значительно расширяет кругозор разработчиков PHP. В этих областях в настоящее время наблюдается дефицит PHP-разработчиков. Если вы хотите иметь свои технические преимущества в области PHP, не хотите ограничиваться повседневной работой, связанной с CRUD, или хотите развиваться в направлении архитектора или технического эксперта, то Workerman - это фреймворк, который стоит изучить. Мы рекомендуем разработчикам не только использовать его, но и разрабатывать свои собственные открытые проекты на основе Workerman, чтобы повысить свои навыки и увеличить свое влияние, например, Beanbun - фреймворк веб-сканирования с поддержкой многопоточности - это хороший пример, который получил множество положительных отзывов вскоре после его запуска.

Некоторые области применения Workerman перечислены ниже:

  1. Приложения для мгновенного обмена сообщениями
    Например, веб-чаты, мгновенные сообщения, мини-программы WeChat, уведомления в мобильных приложениях, уведомления в ПК-программах и т. д.
    [Пример чата workerman-chat, веб-уведомления, чат小蝌蚪]

  2. Интернет вещей
    Например, коммуникация Workerman с принтерами, с микроконтроллерами, смарт-браслетами, умным домом, общими велосипедами и т. д.
    [Клиентские примеры, такие как 易联云, 易泊时代 и т. д.]

  3. Игровые серверы
    Например, настольные игры, MMORPG и т. д.
    [Пример browserquest-php]

  4. HTTP-сервисы
    Например, создание высокопроизводительных HTTP-интерфейсов, высокопроизводительных веб-сайтов. Если вы хотите создать HTTP-сервис или сайт, настоятельно рекомендуем webman

  5. Сервисная архитектура SOA
    Используя Workerman, упакуйте разные функциональные единицы существующего бизнеса и предоставьте единый интерфейс в виде сервиса, чтобы добиться слабосвязанной, легко обслуживаемой, высокой доступности и масштабируемости системы.
    [Пример workerman-json-rpc, workerman-thrift]

  6. Другие серверные программы
    Например, GatewayWorker, PHPSocket.IO, HTTP-прокси, sock5-прокси, распределенные компоненты связи, распределенные компоненты обмена данными, очереди сообщений, DNS-серверы, веб-серверы, CDN-серверы, FTP-серверы и т. д.

  7. Компоненты
    Например, асинхронный redis, асинхронный HTTP-клиент, MQTT-клиент для Интернета вещей, очереди сообщений workerman/redis-queue, workerman/stomp, workerman/rabbitmq, компоненты мониторинга файлов, а также множество компонентов, разработанных третьими сторонами.

Очевидно, что традиционные MVC-фреймворки с трудом могут реализовать вышеперечисленные функции, что и стало причиной появления Workerman.

Идеология Workerman

Крайне минималистичный, стабильный, высокопроизводительный, распределенный.

Минимализм

Малое - это красиво, ядро Workerman крайне минималистично и состоит всего из нескольких PHP-файлов, а также экспонирует только несколько интерфейсов, что делает его очень простым для изучения. Все остальные функции расширяются за счет компонентов.

Workerman обладает обширной документацией + авторитетным сайтом + активным сообществом + несколькими тысяча человек QQ-группами + множеством высокопроизводительных компонентов + большим количеством примеров, что позволяет разработчикам с легкостью использовать его.

Стабильность

Workerman с тех пор, как был открыт, используется многими上市公司 в крупных масштабах и является супер стабильным. Некоторые сервисы работают уже более 2 лет без перезагрузки и продолжают работать на высокой скорости. Нет coredump, нет утечек памяти, нет ошибок.

Высокая производительность

Workerman благодаря своей работе в памяти не зависит от apache/nginx/php-fpm, исключает затраты на связь между контейнером и PHP, а также затраты на инициализацию и уничтожение всего для каждого запроса, что обеспечивает 超高的性能, в десятки раз превышающий производительность традиционных MVC-фреймворков. При тестировании нагрузки QPS с помощью ab на PHP 7 даже превышает производительность отдельно взятого nginx.

Распределенный

Сейчас уже не время действовать в одиночку; даже самая мощная одна серверная машина имеет свои пределы. Распределенное развертывание с несколькими серверами - это правильный путь. Workerman предоставляет полноценное решение для распределенной передачи по длинным соединениям GatewayWorker фреймворк, добавление серверов требует всего лишь небольшой конфигурации и запуска, без необходимости изменения бизнес-кода, что значительно увеличивает емкость системы. Если вы разрабатываете приложения для длинных TCP-соединений, мы рекомендуем использовать GatewayWorker, это обертка для Workerman, предлагающая более богатые интерфейсы и мощные возможности распределенной обработки для приложений с длинными соединениями.

Область применения данного руководства

Версии Workerman 3.x - 5.x

Пользователи Windows (обязательно к прочтению)

Workerman поддерживает как Linux, так и Windows. Windows-версия Workerman не зависит от каких-либо расширений, необходимо лишь правильно настроить переменные окружения PHP, инструкции по установке и важные замечания для Windows-версии Workerman смотрите в разделе обязательно прочитайте для пользователей Windows.

Клиент

Протокол связи Workerman является открытым и настраиваемым, поэтому теоретически Workerman может взаимодействовать с клиентами, использующими любой протокол на любой платформе. Когда пользователи разрабатывают клиент, они могут установить связь с сервером в соответствии с соответствующим протоколом связи.