Что такое Свифт?
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/swiftLiВремя выполнения::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