Преимущества Localzet Server

1. Чистая разработка на PHP

Приложения, разработанные с использованием Localzet Server, могут быть запущены независимо от контейнеров, таких как php-fpm, apache, nginx. Это делает разработку, развертывание и отладку приложений на PHP очень удобными для разработчиков.

2. Поддержка многопроцессорной обработки в PHP

Localzet Server по умолчанию поддерживает многопроцессорную обработку, что позволяет полноценно использовать мощность многоядерных серверов.

Основной процесс отвечает за мониторинг дочерних процессов, а дочерние процессы независимо слушают сетевые подключения, обрабатывают и отправляют данные. Благодаря простой модели процесса Localzet Server становится более стабильным и эффективным.

3. Поддержка TCP и UDP

Localzet Server поддерживает два транспортных уровня протокола - TCP и UDP. Для изменения протокола достаточно изменить одно свойство, без изменения бизнес-логики.

4. Поддержка долгосрочных соединений

Localzet Server позволяет PHP-приложениям поддерживать долгосрочное соединение с клиентами, что особенно важно для чатов, игр и т.д. Один процесс Localzet Server может поддерживать до десятков тысяч одновременных соединений, а несколько процессов поддерживают до нескольких миллионов одновременных соединений.

5. Поддержка различных протоколов прикладного уровня

Интерфейс Localzet Server поддерживает различные протоколы прикладного уровня, включая пользовательские протоколы. Замена протокола в Localzet Server осуществляется без необходимости вносить изменения в бизнес-логику. Кроме того, Localzet Server предоставляет возможность одновременного запуска нескольких портов, каждый из которых может работать с разными протоколами.

6. Поддержка высокой пропускной способности

Localzet Server поддерживает библиотеку событийного цикла Libevent (требуется установка расширения event), что обеспечивает высокую производительность при обработке долгосрочных соединений, особенно при высоких нагрузках. При высоких нагрузках на долгосрочные соединения производительность событийного цикла Event весьма впечатляет. В случае отсутствия расширения Event, Localzet Server автоматически переключается на использование встроенного в PHP вызова системы Select. Оно также обладает высокой производительностью и способно эффективно обрабатывать запросы.

7. Поддержка плавного перезапуска служб

Localzet Server поддерживает возможность плавного перезапуска, обеспечивая плавное обновление службы без влияния на клиентов.

8. Поддержка обнаружения обновлений файлов и автоматической загрузки

В процессе разработки изменения в коде сразу вступают в силу для просмотра результатов благодаря функции FileMonitor.

9. Поддержка запуска дочерних процессов от указанного пользователя

Дочерние процессы в Localzet Server играют ключевую роль, поскольку они непосредственно обрабатывают запросы пользователей. Важно учесть, что для обеспечения безопасности эти процессы не должны обладать излишними привилегиями. Именно поэтому Localzet Server предлагает функцию настройки пользователя: вы можете указать, от имени какого пользователя будут запускаться дочерние процессы. Это значительно повышает безопасность вашего сервера, обеспечивая контроль над уровнем доступа каждого процесса.

10. Поддержка постоянного хранения объектов или ресурсов

В Localzet Server при работе происходит однократная загрузка и разбор PHP-файлов с последующим постоянным пребыванием в памяти. Это позволяет избежать повторного создания и уничтожения объявлений классов и функций, окружения выполнения PHP, таблицы символов и т. д., что совершенно не похоже на механизм PHP в существующих веб-контейнерах.

В Localzet Server в пределах жизненного цикла процесса статические члены класса или глобальные переменные сохраняются на постоянной основе без явного удаления, что значит, что объекты или ресурсы, помещенные в глобальные переменные или статические члены класса, могут быть повторно использованы для всех запросов этого процесса.

Например, достаточно инициализировать соединение с базой данных только один раз в одном процессе, и после этого все запросы этого процесса могут повторно использовать это соединение с базой данных, избегая частого процесса установки соединения с базой данных, TCP-рукопожатия и авторизации в базе данных, что значительно повышает эффективность приложения.

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

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

Более того, Localzet Server не зависит от контейнеров типа nginx, apache, что устраняет некоторые издержки связи PHP с nginx и другими контейнерами. И, самое главное, ресурсы могут сохраняться на постоянной основе, не требуя инициализации подключения к базе данных и другие процессы каждый раз, что делает разработку приложений на Localzet Server очень производительной.

12. Поддержка HHVM

Поддерживается запуск на виртуальной машине HHVM, что значительно повышает производительность PHP. Особенно на CPU-интенсивных бизнес-процессах. По результатам стыковочного тестирования, при отсутствии нагрузочного бизнес-кода Localzet Server под HHVM демонстрирует увеличение пропускной способности сети на 30-80% по сравнению с Zend PHP 5.6.

13. Поддержка распределенного развертывания

14. Поддержка демонизации

15. Поддержка прослушивания нескольких портов

16. Поддержка перенаправления стандартных ввода-вывода