Swoft 2.0.7 如期而至

Pony 19天前 53

什么是 Swoft ?

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

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

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-cloud/swoft

Gitee: https://gitee.com/swoft/swoft

官网:https://www.swoft.org

文档:https://www.swoft.org/docs

更新记录

升级提示:

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

更新 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)
返回
发新帖