Создание и запуск проекта Workerman
Что такое Workerman?
Workerman - это высокопроизводительная асинхронная PHP библиотека для сетевых коммуникаций, разработанная для создания высококонкурентных, высокопроизводительных сетевых приложений. Она может быть использована для построения веб-серверов, серверов WebSocket, серверов TCP/UDP и других приложений в реальном времени, таких как чаты, игровые серверы, IoT и т.д. Workerman обладает легкостью, удобством использования и высокой эффективностью, что позволяет разработчикам легко создавать сложные сетевые приложения.
Основные особенности и преимущества Workerman
- Высокая производительность: Основан на событийном управлении и асинхронном неблокирующем ввода/вывода, способен обрабатывать большое количество параллельных соединений.
- Поддержка нескольких протоколов: Поддерживает HTTP, WebSocket, TCP, UDP и другие сетевые протоколы.
- Легкость использования: Предоставляет простые и удобные API, что позволяет разработчикам быстро начать работу.
- Гибкое расширение: Возможность расширения функционала через плагины и дополнения.
- Сильная поддержка сообщества: Активное сообщество разработчиков и богатые ресурсы документации.
Workerman помогает разработчикам быстро создавать высокопроизводительные сетевые приложения, подходящие для различных сценариев, требующих высококонкурентных обработок.
Создание и запуск простого веб-сервера с использованием Workerman
В этой статье мы покажем, как создать и запустить простой веб-сервер с использованием Workerman в среде ServBay. Мы продемонстрируем, как установить Workerman, написать базовый серверный код и запустить сервер.
TIP
ServBay рекомендует разработчикам размещать сайты в каталоге /Applications/ServBay/www
для удобства управления.
Установка Workerman
Установите Composer
При поставке ServBay ужесодержит Composer, не требует отдельной установки.
Создайте каталог проекта
Создайте новый каталог проекта и перейдите в него:
bashcd /Applications/ServBay/www mkdir servbay-workerman-app cd servbay-workerman-app
1
2
3Установите Workerman
Используйте Composer для установки Workerman:
bashcomposer require workerman/workerman
1
Написание кода веб-сервера
Создайте файл server.php
в каталоге проекта и добавьте следующий код:
<?php
require __DIR__ . '/vendor/autoload.php';
use Workerman\Worker;
// Создайте экземпляр веб-сервера и прослушивайте порт 8080
$webServer = new Worker('http://0.0.0.0:8080');
// Запустите 4 процесса для обработки запросов
$webServer->count = 4;
// Определите логику обработки запросов
$webServer->onMessage = function($connection, $request) {
$connection->send('Hello ServBay!');
};
// Запустите все экземпляры Worker
Worker::runAll();
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Запуск веб-сервера
В каталоге проекта выполните следующую команду для запуска веб-сервера:
php server.php start
После запуска, вы можете открыть в браузере http://localhost:8080
и увидеть сообщение Hello ServBay!
на странице.
Создание WebSocket сервера с использованием Workerman
Помимо веб-сервера, Workerman также позволяет создавать WebSocket серверы. Вот пример простого WebSocket сервера.
Создание кода WebSocket сервера
Создайте файл
websocket_server.php
в каталоге проекта и добавьте следующий код:php<?php require __DIR__ . '/vendor/autoload.php'; use Workerman\Worker; // Создайте экземпляр WebSocket сервера и прослушивайте порт 8081 $wsServer = new Worker('websocket://0.0.0.0:8081'); // Запустите 4 процесса для обработки запросов $wsServer->count = 4; // Определите логику обработки при установке соединения $wsServer->onConnect = function($connection) { echo "Новое соединение\n"; }; // Определите логику обработки при получении сообщения $wsServer->onMessage = function($connection, $data) { $connection->send('Received: ' . $data); }; // Определите логику обработки при закрытии соединения $wsServer->onClose = function($connection) { echo "Соединение закрыто\n"; }; // Запустите все экземпляры Worker Worker::runAll();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28Запуск WebSocket сервера
В каталоге проекта выполните следующую команду для запуска WebSocket сервера:
bashphp websocket_server.php start
1После запуска, вы можете использовать WebSocket клиент (например, веб-инструмент для отладки WebSocket) чтобы подключиться к
ws://localhost:8081
и отправлять сообщения. Сервер будет отображать полученные сообщения.
Создание TCP сервера с использованием Workerman
Workerman также позволяет создавать TCP сервера. Вот пример простого TCP сервера.
Создание кода TCP сервера
Создайте файл
tcp_server.php
в каталоге проекта и добавьте следующий код:php<?php require __DIR__ . '/vendor/autoload.php'; use Workerman\Worker; // Создайте экземпляр TCP сервера и прослушивайте порт 8082 $tcpServer = new Worker('tcp://0.0.0.0:8082'); // Запустите 4 процесса для обработки запросов $tcpServer->count = 4; // Определите логику обработки при установке соединения $tcpServer->onConnect = function($connection) { echo "Новое соединение\n"; }; // Определите логику обработки при получении сообщения $tcpServer->onMessage = function($connection, $data) { $connection->send('Received: ' . $data); }; // Определите логику обработки при закрытии соединения $tcpServer->onClose = function($connection) { echo "Соединение закрыто\n"; }; // Запустите все экземпляры Worker Worker::runAll();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28Запуск TCP сервера
В каталоге проекта выполните следующую команду для запуска TCP сервера:
bashphp tcp_server.php start
1После запуска, вы можете использовать TCP клиент (например,
telnet
или командуnc
) чтобы подключиться кlocalhost:8082
и отправлять сообщения. Сервер будет отображать полученные сообщения.
Заключение
Следуя вышеописанным шагам, вы успешно создали и запустили проект Workerman с помощью ServBay. Вы использовали возможности Workerman для создания веб-сервера, WebSocket сервера и TCP сервера. Высокая производительность и удобство использования Workerman делают его отличным выбором для построения высококонкурентных и высокопроизводительных сетевых приложений. Надеемся, эта статья поможет вам быстро освоить Workerman и использовать его в ваших проектах.