Как включить модуль Swoole для PHP в ServBay
ServBay — мощная локальная среда для веб-разработки, которая включает множество необходимых инструментов и расширений для разработчиков, в том числе и высокопроизводительное расширение Swoole для PHP. Swoole — это асинхронный, параллельный и высокопроизводительный движок сетевых коммуникаций, разработанный специально для PHP, который позволяет значительно повысить производительность и масштабируемость PHP-приложений. В этой статье подробно рассказано, как просто включить расширение Swoole в ServBay и использовать его возможности для создания более эффективных PHP-сервисов и приложений.
О фреймворке Swoole
Swoole — это open source проект, предоставляющий для PHP продвинутые возможности, подобные Node.js: асинхронный ввод-вывод, корутины, многопроцессорность и многое другое. Используя Swoole, разработчики на PHP могут избавиться от ограничений классической синхронной модели работы веб-сервера (Apache/Nginx + PHP-FPM) и строить высокопроизводительные долгоживущие сервисы, например:
- Высокопроизводительные API шлюзы
- Приложения с обменом данными в реальном времени (WebSocket)
- Игровые серверы
- Программы для Интернета вещей (IoT)
- Backend-сервисы и обработка задач
Основные преимущества Swoole
- Высокая производительность: Использование системных вызовов epoll/kqueue для реализации асинхронного неблокирующего ввода-вывода, поддержка многопоточной, многопроцессной и корутинной архитектуры, что обеспечивает высокую пропускную способность и низкие задержки.
- Асинхронность и корутины: Позволяет писать асинхронный код в синхронном стиле, существенно ускоряя процесс разработки.
- Богатый набор компонентов: Встроенные HTTP, WebSocket, TCP, UDP серверы и клиенты, а также пулы подключений, таймеры, менеджмент процессов и многое другое.
- Легкая интеграция: Совместим с современными PHP-фреймворками (Laravel, Symfony, ThinkPHP и др.), а также используется для создания абсолютно новых приложений на основе Swoole.
Поддержка модуля Swoole в ServBay
В ServBay расширение Swoole уже предустановлено для разных версий PHP — не требуется отдельно скачивать или собирать его вручную. ServBay самостоятельно управляет версиями Swoole, подходящими для каждой версии PHP.
На данный момент, ServBay поддерживает включение Swoole для следующих версий PHP:
- PHP 5.6
- Серии PHP 7.x
- Серии PHP 8.x (включая PHP 8.5)
При выборе нужной версии PHP ServBay автоматически предоставляет совместимый модуль Swoole.
Предварительные требования
Перед активацией модуля Swoole убедитесь, что:
- Установлен и запущен ServBay.
- Вы выбрали ту версию PHP в ServBay, с которой хотите использовать Swoole.
Как включить модуль Swoole
В ServBay предусмотрены два способа активации модуля Swoole: через графический интерфейс (GUI) и вручную через конфигурационные файлы. Рекомендуется использовать GUI — это быстрее и проще.
Включение через графический интерфейс ServBay (рекомендуется)
Самый простой и быстрый способ:
- Откройте графический интерфейс ServBay.
- В левом навигационном меню выберите Языки (Languages).
- Кликните на PHP.
- В списке версий PHP справа найдите нужную версию (например:
PHP 8.3
) и убедитесь, что она выбрана (зеленая точка). - Нажмите кнопку Расширения (Extensions) справа от выбранной версии.
- В открывшемся списке расширений найдите swoole.
- Передвиньте переключатель слева от Swoole в положение "Включено" (он станет зеленым).
- Нажмите Сохранить (Save) или Применить (Apply) внизу окна.
- ServBay предложит перезапустить связанный PHP-сервис для загрузки новых расширений. Нажмите Перезапустить (Restart).
Дождитесь окончания перезапуска — Swoole успешно активирован.
Ручное редактирование конфигурации (для продвинутых пользователей)
Если требуется более тонкая настройка или вы предпочитаете manuel management, можно включить Swoole через ini
-файлы PHP.
Откройте каталог конфигураций
conf.d
для нужной версии PHP. Он содержит модули и дополнительные настройки. ServBay автоматически подгружает все.ini
-файлы из этого каталога. Например, для PHP 8.3 путь обычно такой:/Applications/ServBay/etc/php/8.3/conf.d/
1Если у вас специфический путь установки ServBay — используйте его.
Найдите и откройте файл
swoole.ini
.Обычно строка подключения Swoole закомментирована (стоит символ
;
). Найдите такой фрагмент:ini[Swoole] ; Uncomment the following line to enable Swoole ;extension = swoole.so
1
2
3Удалите символ
;
, чтобы раскомментировать строку подключения модуля:ini[Swoole] ; Uncomment the following line to enable Swoole extension = swoole.so
1
2
3Сохраните файл
swoole.ini
.Вернитесь в интерфейс ServBay, найдите соответствующий PHP-сервис и перезапустите его.
После перезапуска модуль Swoole будет успешно загружен согласно настройкам.
Как проверить успешную активацию Swoole
Чаще всего используется функция phpinfo()
для просмотра списка подключенных модулей.
- В корне одного из сайтов, обслуживаемых через ServBay (например:
/Applications/ServBay/www/servbay.demo/public/
), создайте файлphpinfo.php
. - Откройте его для редактирования и вставьте:php
<?php phpinfo(); ?>
1
2
3 - Убедитесь, что сайт (например,
servbay.demo
) настроен в ServBay и «смотрит» в нужную папку. - Откройте браузер и перейдите по адресу, например:
https://servbay.demo/phpinfo.php
. - На открывшейся странице пролистайте вниз или воспользуйтесь поиском по странице (Ctrl+F или Cmd+F), чтобы найти слово "swoole".
Если на странице отображается информация о Swoole (версия, опции и пр.), значит модуль активирован.
Иллюстрация: поиск информации о Swoole на странице phpinfo
Пример использования Swoole
После включения модуля Swoole вы можете начинать разрабатывать собственные приложения на его основе. Ниже приведён пример простого HTTP-сервера на Swoole.
Пример: запуск простого HTTP-сервера на Swoole
Создайте каталог проекта В вашей директории разработки (например,
/Applications/ServBay/www/
) создайте новый каталог, например,my-swoole-app
. Внутри создайте папкуpublic
для входного файла.bashcd /Applications/ServBay/www/ mkdir my-swoole-app cd my-swoole-app mkdir public
1
2
3
4Создайте входной файл сервера
public/index.php
php<?php require __DIR__ . '/../vendor/autoload.php'; // Если у вас есть зависимости, установленные через Composer use Swoole\Http\Server; use Swoole\Http\Request; use Swoole\Http\Response; // Создаем HTTP-сервер, слушающий все локальные IP (0.0.0.0) на порту 9501 $server = new Server("0.0.0.0", 9501); // Дополнительные параметры сервера (не обязательно) // $server->set([ // 'worker_num' => 4, // Количество рабочих процессов // 'daemonize' => false, // Запуск в фоне // ]); // Обработка события запроса $server->on("request", function (Request $request, Response $response) { // Установка заголовка ответа $response->header("Content-Type", "text/plain"); // Тело ответа $response->end("Hello ServBay with Swoole!"); }); // Обработка запуска сервера (не обязательно) $server->on("start", function (Server $server) { echo "Swoole http server is started at http://0.0.0.0:9501\n"; }); // Старт сервера $server->start(); echo "Swoole server stopped.\n"; // Эта строка выполняется уже после остановки сервера
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
29
30
31
32
33
34
35Примечание: строка
require __DIR__ . '/../vendor/autoload.php';
нужна только в том случае, если вы используете дополнительные зависимости для Swoole через Composer (например,swoole/ide-helper
или фреймворки на Swoole). Для чистых примеров на Swoole ее обычно можно удалить.Запуск сервера через терминал Откройте терминал ServBay или стандартный терминал macOS, перейдите в директорию проекта (
/Applications/ServBay/www/my-swoole-app/
). Убедитесь, что используете PHP из ServBay (можно проверить черезwhich php
или использовать терминал ServBay).Запустите команду:
shphp public/index.php
1Если всё прошло успешно, увидите сообщение "Swoole http server is started at http://0.0.0.0:9501".
Иллюстрация: запуск сервера Swoole через терминал
Проверка работы сервера После старта сервера откройте в браузере
http://localhost:9501
— должна появиться надпись "Hello ServBay with Swoole!".Чтобы остановить сервер, нажмите
Ctrl + C
в терминале.
Важные замечания
- Способ запуска: В приведённом примере сервер Swoole запускается командой в терминале и предназначен для создания долгоживущих сервисов. Классические веб-приложения (например, Laravel/Symfony/WordPress) обычно работают в режиме PHP-FPM и обрабатываются через Caddy или Nginx. Если хотите задействовать эти фреймворки с Swoole (например, через Hyperf или Swoole-Laravel), используйте их собственные скрипты сервера — принцип работы схож: процесс живет отдельно.
- Занятость портов: Сервер Swoole слушает указанный порт (в примере 9501). Убедитесь, что порт свободен.
- Логи ошибок: Все ошибки или вывод Swoole направляются в терминал, который запустил процесс, или в лог-файлы — в зависимости от конфигурации.
Часто задаваемые вопросы (FAQ)
В: Я активировал Swoole через GUI ServBay, но он не отображается на phpinfo(). Что делать?
О: Проверьте следующее:
- Подтвердите, что используете правильную версию PHP для просмотра страницы
phpinfo()
. В ServBay может быть несколько версий PHP, убедитесь, что сайт или командная строка используют именно ту, где был активирован Swoole. - После активации Swoole обязательно сохраните настройки и перезапустите соответствующий PHP-сервис.
- Если вы редактировали
swoole.ini
вручную, проверьте путь, имя файла и что строкаextension = swoole.so
раскомментирована.
В: Почему при запуске примера выводится ошибка Class 'Swoole\Http\Server' not found
?
О: Обычно это значит, что расширение Swoole не подключено к используемой версии PHP. Проверьте активацию и убедитесь, что в терминале используется тот PHP, где Swoole включен. Быстро проверить это можно командой: php -m | grep swoole
.
Итоги
С помощью ServBay активация расширения Swoole для PHP максимально упрощена. Независимо от того, используете ли вы GUI или редактируете конфигурацию вручную, вы сможете быстро подключать Swoole для нужной версии PHP, чтобы разрабатывать мощные асинхронные веб-приложения. Благодаря преимуществам Swoole ваши сервисы станут быстрее и смогут обрабатывать больше одновременных запросов, а значит — раскроют весь потенциал PHP в современной веб-разработке. ServBay же позаботится об управлении окружением, позволяя вам сосредоточиться на коде, а не на настройках.