PHP Microservice Framework: Swoft v2.0.7 Lançamento na programação


O que é o Swoft?


O Swoft é um framework de alto desempenho em microsserviços em PHP. Foi publicado por muitos anos e se tornou a melhor escolha para php. Pode ser como Go, servidor da web incorporado de corotina e cliente comum de corotina e é residente na memória, independentemente do PHP-FPM tradicional. Existem operações de idioma Go semelhantes, semelhantes às anotações flexíveis da estrutura Spring Cloud.


Através de três anos de acumulação e exploração de direção, a Swoft transformou a Swoft na Spring Cloud no mundo PHP, que é a melhor escolha para a estrutura de alto desempenho e gerenciamento de microsserviços do PHP.


Github


https://github.com/swoft-cloud/swoft


Swoft v2.0.7


O Swoft v2.0.7 continua navegando na v2.0.6 e foi usado em um grande número de operações de produção, as quais foram reconhecidas e suportadas por muitos usuários. A versão oficial fez muitas melhorias e otimizações, com melhor desempenho.


  • Adicionado componente de função Http Session, fornece gerenciamento de sessões http, suporta vários drivers de armazenamento
  • Suporte aprimorado à solicitação do servidor TCP para adicionar middleware de método global ou correspondente
  • Suporte aprimorado da solicitação de mensagem do servidor Websocket para adicionar middleware de método global ou correspondente

Sessão HTTP


Instale o componente swoft / session com o Composer


  • A execução do composer require swoft/session no diretório em que o projeto composer.json está localizado.
  • Adicione o Swoft\Http\Session\SessionMiddleware ao middleware global

No app/bean.php :


  'httpDispatcher' => [ // Add global http middleware 'middlewares' => [ \Swoft\Http\Session\SessionMiddleware::class, ], ], 

O padrão é baseado em drivers de arquivos locais, salvos no diretório runtime/sessions

Mais informações sobre o driver precisam apenas configurar o handler correspondente.
Por exemplo, configure o driver Redis :


 'sessionHandler' => [ 'class' => RedisHandler::class, // Config redis pool 'redis' => bean('redis.pool') ], 

Middleware do sistema de mensagens Websocket


  • Middleware global

Configurado em app/bean.php :


  /** @see \Swoft\WebSocket\Server\WsMessageDispatcher */ 'wsMsgDispatcher' => [ 'middlewares' => [ \App\WebSocket\Middleware\GlobalWsMiddleware::class ], ], 

  • Atuando no controlador

 /** * Class HomeController * * @WsController(middlewares={DemoMiddleware::class}) */ class TestController {} 

Middleware de solicitação TCP


  • Middleware global

Configurado em app/bean.php :


  /** @see \Swoft\Tcp\Server\TcpDispatcher */ 'tcpDispatcher' => [ 'middlewares' => [ \App\Tcp\Middleware\GlobalTcpMiddleware::class ], ], 

  • Atuando no controlador

 /** * Class DemoController * * @TcpController(middlewares={DemoMiddleware::class}) */ class DemoController { // .... } 

Atualizar log


Dicas de atualização:
  • Swoole\WebSocket\Server::push O quarto parâmetro $finish foi alterado para int type após o swoole 4.4.12 .
  • O parâmetro de evento TcpServerEvent::CONNECT do servidor tcp permanece o mesmo que receber e fechar. Posições de swap de $fd, $server .


Github


https://github.com/swoft-cloud/swoft


Fixed :


  • Ao corrigir a injeção de configuração, se o valor não for encontrado, o valor padrão do tipo correspondente será usado para substituir o atributo, fazendo com que o valor padrão do atributo seja substituído d84d50a7
  • Corrigido ao usar o agendamento de mensagens no servidor ws, nenhum dado vazio foi filtrado, resultando em mais uma resposta. Evite o método swoft-cloud / swoft # 1002 [d84d50a7] ( https://github.com/swoft-cloud/swoft-component/ Pull / 522 / commits / d84d50a76c4c7ff19dc0896868745cfe8f0d93c9)
  • Corrigido ao usar o agendamento de mensagens no servidor tcp, nenhum dado vazio foi filtrado, resultando em mais uma resposta. 07a01ba1
  • Corrigidas as dependências ausentes da biblioteca swoft / stdlib ao usar o componente do console independentemente c569c81a
  • Fixed ArrayHelper::get Quando a chave de entrada é um número inteiro, o parâmetro parâmetro está incorreto a44dcad
  • Corrija a renderização do console usando a tabela, ao calcular o valor int, calcule o erro de tipo de relatório de largura 74a835ab

  • O erro corrigido no usuário do componente não pode personalizar o nível de tratamento de erros padrão 4c78aeb
  • Correção Ativar e desativar as configurações do componente isEnable() não funciona da8c51e56
  • Correções O uso do método uniqid() no ambiente cygwin deve definir o segundo parâmetro como true c7f688f
  • Corrigido Não foi possível definir o título do processo no ambiente cygwin e causar o erro c466f6a
  • Corrigido Não foi possível excluir os dados do cookie do navegador usando a response->delCookie() 8eb9241
  • Corrigido o envio de mensagens do servidor WS, os dados ext recebidos não são necessariamente uma matriz que causa um erro ff45b35
  • Corrigir arquivo de log dividido por tempo c195413
  • Corrija o pequeno problema no formato JSON do log a3fc6b9
  • Corrigida a chamada getList provedor de serviços rpc duas vezes fd03e71
  • O redis cluster fixar não suporta o parâmetro de auth 7a678f
  • Corrija o modelo json consulta de modelo, não suporta a array 6023a9
  • Rediscar operação multi fixa não conectada no tempo e5f698
  • A correção redis não suporta expireAt , geoRadius 749241
  • Corrigido o problema de desvio de detecção de carimbo de data / hora crontab eb08a46

Atualização (atualização) :


  • O console de atualização também emite um evento antes de renderizar a mensagem de ajuda ConsoleEvent::SHOW_HELP_BEFORE d3f7bc3
  • Simplifique e unifique a lógica de comando de gerenciamento de servidor http, ws, tcp, rpc f202c826
  • Atualize as classes de conexão ws e tcp para adicionar os métodos toArray e toArray para facilitar a exportação de informações e a restauração de conexões via armazenamento de terceiros ( redis ) [a8b0b7c] ( https://github.com/swoft-cloud/swoft -component / pull / 528 / commits / a8b0b7c77d56d4392eba75d13a911816b9dc0cee)
  • Otimize o servidor para adicionar um manipulador de eventos de mensagem unificado do swoole pipe, use o evento swowt em ws, tcp para manipular as mensagens entre processos 1c51a8c

Aprimoramento :


  • Agora, as solicitações tcp suportam a adição de middleware de método global ou correspondente, e o processo e o uso são semelhantes ao http middleware. Útil apenas ao usar o agendamento do sistema 6b593877
  • Agora, a solicitação de mensagem do websocket suporta a adição de middleware de método global ou correspondente, e o processo e o uso são semelhantes ao http middleware. Útil apenas ao usar o agendamento do sistema 9739815
  • O Gerenciamento de Eventos permite que a configuração destroyAfterFire limpe os dados transportados no evento após o envio de cada evento 50bf43d3
  • O code adicionado à exceção de erro do banco de dados retorna fd306f4
  • Operação de arquivo da writeFile Nova exceção de falha de gravação 08c4244
  • Verificação de novo parâmetro RPC 8646fc5

Github


https://github.com/swoft-cloud/swoft

Source: https://habr.com/ru/post/pt476508/


All Articles