1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/tsingsun-yii2-swoole

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

О Yii2 Swoole

Latest Stable Version

Build Status

Total Downloads

Этот проект основан на версии цикла событий PHP-Swoole и представляет собой решение для запуска проекта Yii2 на платформе Swoole. Благодаря этому расширению, можно значительно повысить параллелизм исходного проекта. Кроме того, через полностековый фреймворк Yii2 можно разрабатывать TCP, UDP и WebSocket сетевые сервисы.

После версии Swoole4 переключение между циклами событий стало более удобным, и в коде больше не нужно использовать call_user_func для замены. Адаптивность Yii2-Swoole становится всё сильнее.

Основная версия:

  • Yii 2.0.14 или выше;
  • Swoole 4.2 или выше.

Установка

Для Swoole4 используйте:

composer require tsingsun/yii2-swoole

Если вы используете версию Swoole2, используйте версию 1.0.

Особенности

  • Высокая совместимость с проектами Yii2, без необходимости изменять код проекта.
  • Поддержка переключения между циклом событий и нецикличным режимом работы одной строкой кода.
  • Написание скрипта запуска позволяет воспользоваться преимуществами высокой производительности и параллельных сервисов Swoole + цикла событий.
  • Стабильная работа памяти.
  • Локализация MySQL, Redis пулов соединений (в среде цикла событий пулы соединений не имеют большого значения).
  • Реализована функция сеанса в среде Swoole.

Использование

Файл запуска Swoole — это скрипт запуска сервиса, который можно настроить в соответствии с различными типами сервисов или бизнес-требованиями. Переключение между циклом событий и нецикличной средой также осуществляется в скрипте запуска.

use \tsingsun\swoole\server\Server;
// Сайт корневой каталог, эквивалентный корневому каталогу nginx
defined('WEBROOT') or define('WEBROOT', __DIR__);
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
// Переключатель цикла событий, строго в соответствии с вашей конфигурацией среды
defined('COROUTINE_ENV') or define('COROUTINE_ENV', true);

require(__DIR__ . '/../../vendor/autoload.php');
$config = [
    'class'=>'tsingsun\swoole\server\HttpServer',
    // Конфигурация Swoole, настраивается в зависимости от ситуации
    'setting' => [
        'daemonize'=>0,
        'max_coro_num'=>3000,
        'reactor_num'=>1,
        'worker_num'=>1,
        'task_worker_num'=>1,
        'pid_file' => __DIR__ . '/../runtime/testHttp.pid',
        'log_file' => __DIR__.'/../runtime/logs/swoole.log',
        'debug_mode'=> 1,
        'user'=>'tsingsun',
        'group'=>'staff',
        // 4.0 Новые опции
        'enable_coroutine' => COROUTINE_ENV
    ],
];

Server::run($config,function (Server $server){
    $starter = new \tsingsun\swoole\bootstrap\WebApp($server);
    // Функция инициализации независима, чтобы избежать загрузки файлов Yii при запуске, а при обновлении библиотеки используется перезапуск для плавного запуска сервера
    $starter->init = function (\tsingsun\swoole\bootstrap\BaseBootstrap $bootstrap) {
        // Необходимо использовать файлы Yii-Swoole проекта
        require(__DIR__ . '/vendor/tsingsun/yii2-swoole/src/Yii.php');
        // Импорт конфигурации исходного проекта
        $config = yii\helpers\ArrayHelper::merge(
            require(__DIR__ . '/../config/main.php'),
            require(__DIR__ . '/../config/main-local.php')
        );        
        $bootstrap->appConfig = $config;
    };
    $server->bootstrap = $starter;
    $server->start();
});

Команды управления CLI:

Использование: php [startScript] [command]

// Запуск
php http_server.php start
// Плавный перезапуск, требуется root-доступ, kill
php http_server.php reload
// Завершение работы
php http_server.php stop

Режимы работы:

  • HttpServer (doc/httpServer.md): использование Swoole в качестве HTTP-сервера.
  • WebSocketServer (doc/WebSocketServer.md) [Устарело, если необходимо, можно напрямую использовать Swoole Native, см. пример файла конфигурации].
  • TCP/UDP Server — TODO.

Разработка и отладка:

  • По-прежнему можно использовать интегрированную среду разработки, такую как XAMPP, для отладки.
  • На основе Swoole достаточно настроить среду PHP, чтобы использовать XDEBUG, а если это PHPSTORM, то в конфигурации Debug запустите скрипт запуска Swoole и нажмите Debug для запуска.
  • При достижении точки останова OnWorkStart запрос будет заблокирован.
  • Если включена задача, и точка останова находится в задаче, запрос отладки будет заблокирован.
  • Если страница выводится на консоль, обычно она выводится напрямую с помощью echo, и можно отследить каждый вывод.

Из-за конфликта Swoole2.0 и выше с XDEBUG (в основном некоторые классы клиента цикла событий), невозможно отладить в IDE, лучшая практика — разработать в обычной среде PHP и протестировать в среде Swoole.

Совместное использование с Nginx

Swoole не так тесно связан с традиционными промежуточными программами и Nginx, как некоторые параметры, которые необходимо записать в HTTP Header самостоятельно. В обычном $_SERVER сохраняются имена параметров, чтобы предотвратить конфликты имён с заголовками.

server {
    root /data/wwwroot/;
    server_name local.swoole.com;

    location / {
        proxy_http_version 1.1;
        proxy_set_header Connection "keep-alive";
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header SERVER_NAME $server_name;
        if (!-e $request_filename) {
             proxy_pass http://127.0.0.1:9501;
        }
    }
}

Ограничения

Некоторые функции оригинального Yii2 ограничены в среде swoole. Пожалуйста, обратитесь к документу об ограничениях (doc/limit.md).

Пожалуйста, внимательно прочитайте документацию по программированию Swoole (https://wiki.swoole.com/wiki/page/851.html), большинство проблем с запросами без ответа связано с этим. Что касается обработки сторонних пакетов call_user_func или call_user_func_array, пожалуйста, обратитесь к обработке functionReplace.php.

Переписанные компоненты

Чтобы адаптироваться к механизму постоянной памяти Swoole, некоторые компоненты Yii были переписаны, пытаясь сохранить пользовательский опыт без дополнительных изменений кода и незаметной миграции. Некоторые изменения компонентов описаны в документе (doc/component_changes.md).

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Запустите проект Yii2 на Swoole. Развернуть Свернуть
BSD-3-Clause
Отмена

Обновления (2)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/tsingsun-yii2-swoole.git
git@api.gitlife.ru:oschina-mirror/tsingsun-yii2-swoole.git
oschina-mirror
tsingsun-yii2-swoole
tsingsun-yii2-swoole
master