Swoft 2.0.7 如期而至

什么是 Swoft ?
Swoft 是一款基于 Swoole 扩展实现的 PHP 微服务协程框架。Swoft 能像 Go 一样,内置协程网络服务器及常用的协程客户端且常驻内存,不依赖传统的 PHP-FPM。有类似 Go 语言的协程操作方式,有类似 Spring Cloud 框架灵活的注解、强大的全局依赖注入容器、完善的服务治理、灵活强大的 AOP、标准的 PSR 规范实现等等。

Swoft 通过长达三年的积累和方向的探索,把 Swoft 打造成 PHP 界的 Spring Cloud, 它是 PHP 高性能框架和微服务治理的最佳选择。

Github
https://github.com/swoft-clou…
Swoft v2.0.7
2.0.7 在 2.0.6 上继续扬帆,已在大量的生产业务中使用,得到很多用户的肯定和支持。正式版本我们做了许多改进和优化,拥有了更好的性能。

新增 Http Session 功能组件,提供http会话管理, 支持多种存储驱动
增强 TCP server 请求支持添加全局或对应的方法中间件
增强 Websocket server 消息请求支持添加全局或对应的方法中间件
Http Session
通过 Composer 安装 swoft/session 组件

在项目 composer.json 所在目录执行 composer require swoft/session
将 Swoft\Http\Session\SessionMiddleware 中间件加入到全局中间件
在配置文件 app/bean.php 里:

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

默认是基于本地文件驱动,保存在 runtime/sessions 目录
更在驱动只需要配置对应 handler 类,例如配置 Redis 驱动:

‘sessionHandler’ => [
‘class’ => RedisHandler::class,
// Config redis pool
‘redis’ => bean(‘redis.pool’)
],
Websocket消息中间件
全局中间件
配置于 app/bean.php:

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

作用于控制器的
/**

  • Class HomeController

  • @WsController(middlewares={DemoMiddleware::class})
    */
    class TestController
    {}
    TCP 请求中间件
    全局中间件
    配置于 app/bean.php:

    /** @see \Swoft\Tcp\Server\TcpDispatcher /
    ‘tcpDispatcher’ => [
    ‘middlewares’ => [
    \App\Tcp\Middleware\GlobalTcpMiddleware::class
    ],
    ],
    作用于控制器的
    /
    *

  • Class DemoController

  • @TcpController(middlewares={DemoMiddleware::class})
    */
    class DemoController
    {
    // …
    }
    Github
    https://github.com/swoft-clou…
    更新记录
    升级提示:
    Swoole\WebSocket\Server::push 第四个参数 $finish 在 swoole 4.4.12 后改为了 int 类型。
    tcp server 的 TcpServerEvent::CONNECT 事件参数保持跟receive, close一致。 $fd, $server 互换位置。
    修复(Fixed):

修复 config 注入时,没有找到值也会使用对应类型的默认值覆盖属性,导致属性默认值被覆盖 d84d50a7
修复 ws server 中使用message调度时,没有过滤空数据,导致多发出一个响应。避免方法swoft-cloud/swoft#1002 d84d50a7
修复 tcp server 中使用message调度时,没有过滤空数据,导致多发出一个响应。07a01ba1
修复 独立使用console组件时缺少 swoft/stdlib 库依赖 c569c81a
修复 ArrayHelper::get 传入key为 integer 时,报参数错误 a44dcad
修复 console 渲染使用table,有int值时,计算宽度报类型错误 74a835ab
修复 error 组件中用户无法自定义设置默认的错误处理级别 4c78aeb
修复 启用和禁用 组件设置 isEnable() 不生效的问题 da8c51e56
修复 在 cygwin 环境使用 uniqid() 方法必须将第二个参数设置为 true c7f688f
修复 在 cygwin 环境不能够设置进程title而导致报错 c466f6a
修复 使用 http response->delCookie() 无法删除浏览器的cookie数据问题 8eb9241
修复 ws server消息调度时,接收到的ext数据不一定是数组导致报错 ff45b35
修复 日志文件按时间拆分问题c195413
修复 日志 JSON 格式小问题a3fc6b9
修复 rpc 服务提供者 getList 调用两次问题fd03e71
修复 redis cluster 不支持 auth 参数7a678f
修复 模型查询 json 类型, 不支持 array 6023a9
修复 redis multi 操作没有及时是否连接 e5f698
修复 redis 不支持 expireAt, geoRadius 749241
修复 crontab 时间戳检测偏差问题 eb08a46
更新(Update):

更新 console 在渲染 help信息之前也会发出事件 ConsoleEvent::SHOW_HELP_BEFORE d3f7bc3
简化和统一 http, ws, tcp, rpc server管理命令逻辑 f202c826(乐动体育LD77.CLUB)
更新 ws 和 tcp Connection类添加 newFromArray 和 toArray 方法,方便通过第三方存储(redis)时导出信息和恢复连接 a8b0b7c
优化 server 添加统一的 swoole pipe message 事件处理,在 ws, tcp 中使用swoft事件来处理进程间消息 1c51a8c
增强(Enhancement):

现在 tcp 请求支持添加全局或对应的方法中间件,流程和使用跟http中间件类似。仅当使用系统调度时有用 6b593877
现在 websocket message 请求支持添加全局或对应的方法中间件,流程和使用跟http中间件类似。仅当使用系统调度时有用 9739815
事件管理允许设置 destroyAfterFire 在每次事件调度后清理事件中携带的数据 50bf43d3
数据库错误异常新增 code 返回fd306f4
协程文件操作 writeFile 新增写失败异常08c4244
RPC 新增参数验证8646fc5

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值