Что такое Свифт?
Swift-это платформа для совместной работы с микросервисами PHP, основанная на расширении Woolen. Как и Go, Swift имеет встроенные сетевые серверы протоколов и часто используемые клиенты протоколов и находится в памяти, независимо от традиционного PHP-FPM. Существуют режимы совместной работы, аналогичные языку Go, гибкие аннотации, такие как Spring Cloud framework, мощный глобальный контейнер для инъекций зависимостей, идеальное управление услугами, гибкий и мощный AOP, стандартная реализация спецификации PSR и так далее.
Swift встроил Swift в Весеннее облако в мире PHP за три года накопления и изучения направлений. Это лучший выбор для высокопроизводительной платформы PHP и управления микросервисами.
процесс
Компонент процесса включает в себя следующие три функции:
- Технологическая операция
- Пользовательский процесс
- Пул процессов
Пользовательский процесс
Некоторые сценарии обслуживания, такие как Http/RPC/Websocket/TCP, требуют фонового процесса для мониторинга, отчетов или других специальных операций. В это время определенный пользователем рабочий процесс может быть добавлен в соответствующую службу при ее запуске. Пользовательский пользовательский процесс начинается с обслуживания и завершается закрытием службы. Если пользовательский пользовательский процесс случайно закрыт, служба перезапустит новый пользовательский пользовательский процесс, чтобы убедиться, что пользовательский пользовательский процесс всегда существует.
/** * Class MonitorProcess * * @since 2.0 * * @Bean() */ class MonitorProcess extends UserProcess { /** * @param Process $process * * @throws DbException */ public function run(Process $process): void { $process->name('swoft-monitor'); while (true) { $connections = context()->getServer()->getSwooleServer()->connections; CLog::info('monitor = ' . json_encode($connections)); // Database $user = User::find(1)->toArray(); CLog::info('user='.json_encode($user)); // Redis Redis::set('test', 'ok'); CLog::info('test='.Redis::get('test')); Coroutine::sleep(3); } } }
Пул процессов
Пулы процессов обычно используются в сценариях, где требуется постоянное выполнение программ, таких как потребление очередей и вычисление данных. Платформа Swift, основанная на новой инкапсулированной модели всего пула процессов, позволяет разработчикам быстро и просто использовать пул процессов.
Для настройки
return [ 'processPool' => [ 'class' => ProcessPool::class, 'workerNum' => 3 ] ];
Определение процесса
/** * Class Worker1Process * * @since 2.0 * * @Process() */ class Worker1Process implements ProcessInterface { /** * @param Pool $pool * @param int $workerId */ public function run(Pool $pool, int $workerId): void { while (true) { CLog::info('worker-' . $workerId); Coroutine::sleep(3); } } }
команда
$ php bin/swoft process Group: process Usage: bin/swoft process:COMMAND [--opt ...] [arg ...] Global Options: --debug Setting the application runtime debug level(0 - 4) --no-color Disable color/ANSI for message output -h, --help Display this help message -V, --version Show application version information Commands: reload No description message restart No description message start No description message stop No description message Example: bin/swoft process:start Start the process pool bin/swoft process:stop Stop the process pool View the specified command, please use: bin/swoft process:COMMAND -h
TCP
Компонент TCP основан на оригинальном сервере swool и инкапсулирует и уточняет использование функций.
Для настройки
'tcpServer' => [ 'class' => TcpServer::class, 'port' => 18309, 'debug' => env('SWOFT_DEBUG', 0), /* @see TcpServer::$setting */ 'setting' => [ 'log_file' => alias('@runtime/swoole.log'), ], ], /** @see \Swoft\Tcp\Protocol */ 'tcpServerProtocol' => [ 'type' => \Swoft\Tcp\Packer\SimpleTokenPacker::TYPE, // 'openEofCheck' => true, // Defalut use EOF check // 'openLengthCheck' => true, ],
Контроллер
/** * Class DemoController * * @TcpController() */ class DemoController { /** * @TcpMapping("list", root=true) * @param Response $response */ public function list(Response $response): void { $response->setData('[list]allow command: list, echo, demo.echo'); } }
команда
$ php bin/swoft tcp Description: There some commands for manage the tcp server Usage: tcp:{command} [arguments] [options] Commands: start Start the tcp server stop Stop the running server restart Restart the running server Options: -h, --help Show help of the command group or specified command action
Обновление содержимого
Совершенствование:
Swoft\Http\Сообщение\Запрос
Недавно добавленоgetHeaderLines()
(74a2a91)- Aop добавил
получить карту аргументов()
иИмя класса()
Методы (c47e785) - Недавно добавлена
srun()
Функция для планирования совместной маршрутизации (3c4a6a4) - Оптимизация событий сервера(
при запуске
/| при запуске работыпри завершении работы
при завершении работы |/Инцидент с протоколом поддержки (a8d5a8d)
Новая задача блокировки синхронизации доставки (ec938e5)
Добавьте Redis - вызов
- Метод для использования той же операции подключения (92456987)
Совместимость со Swool 4.4.x
Исправлено:
- Имя класса восстановления миграции слишком длинное, чтобы привести к неполной записи имени класса (58314b8)
- Использовать после исправления запросов сущностей
Установщик
После обновления значений полейобновление
Неверное обновление (caadf0e) - Возвращаемая ошибка удаления файла PID после исправления остановки, приводящая к сбою перезапуска (2be450bf11)
- Устранена проблема, связанная с тем, что язык по умолчанию I18N недопустим (b401a504e)
- Исправлен сервер WS с несколькими рабочими, не способный активно закрывать другие рабочие соединения (271b6398)
- Исправлено несоответствие типов контента при получении HTTP-сервером XML-запроса (2ff9a4e61)
- Восстановление с помощью базы данных,
json
Недопустимая операция (92456987) - Ремонтный ограничитель Ограничитель скорости Redis с префиксом Непригоден для использования (7b54d4c)
Обновление:
- Обновление сервера WS можно выполнить с помощью конфигурации
отключенных модулей
Для отключения модуля WS (fa31111d)
Дополнительный:
- Увеличьте презентацию кейса на официальном сайте. Добро пожаловать для отправки дел на официальный склад кейсов soft-cloud/soft-case.
- Изменения в документах на GitHub будут автоматически обновлены до официальных документов, и обновление вручную не требуется.
Новое (Новое)
- Управление процессами (c61b8f7)
- Пользовательский пользовательский процесс (c328d54)
- Пул процессов (d2e6290)
- TCP-сервер
Примечания по обновлению:
- Пожалуйста, избавься от этого.
bin/swift
LiВремя выполнения::enanbleCoroutine()
Настройка - Убедитесь, что имя swool
swool.use_short
Значение равноВкл
Ресурсы
- Название: https://gitee.com/swoft/swoft
- GitHub: https://github.com/swoft-cloud/swoft
- Официальный сайт: https://www.swoft.org
- Документ: https://www.swoft.org/docs