О Yii2 Swoole
Этот проект основан на версии цикла событий PHP-Swoole и представляет собой решение для запуска проекта Yii2 на платформе Swoole. Благодаря этому расширению, можно значительно повысить параллелизм исходного проекта. Кроме того, через полностековый фреймворк Yii2 можно разрабатывать TCP, UDP и WebSocket сетевые сервисы.
После версии Swoole4 переключение между циклами событий стало более удобным, и в коде больше не нужно использовать call_user_func для замены. Адаптивность Yii2-Swoole становится всё сильнее.
Основная версия:
Для Swoole4 используйте:
composer require tsingsun/yii2-swoole
Если вы используете версию Swoole2, используйте версию 1.0.
Файл запуска 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
Режимы работы:
Разработка и отладка:
Из-за конфликта Swoole2.0 и выше с XDEBUG (в основном некоторые классы клиента цикла событий), невозможно отладить в IDE, лучшая практика — разработать в обычной среде PHP и протестировать в среде Swoole.
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 )