内容简介:什么是 Swoft ? Swoft 是一款基于 Swoole 扩展实现的 PHP 微服务协程框架。Swoft 能像 Go 一样,内置协程网络服务器及常用的协程客户端且常驻内存,不依赖传统的 PHP-FPM。有类似 Go 语言的协程操作方式,有类似 ...
什么是 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
{
// ....
}
更多
更新记录
升级提示:
Swoole\WebSocket\Server::push第四个参数$finish在 swoole4.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类型, 不支持array6023a9 - 修复 redis
multi操作没有及时是否连接 e5f698 - 修复 redis 不支持
expireAt,geoRadius749241 - 修复
crontab时间戳检测偏差问题 eb08a46
更新(Update):
- 更新 console 在渲染 help信息之前也会发出事件
ConsoleEvent::SHOW_HELP_BEFOREd3f7bc3 - 简化和统一 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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Operating System Algorithms
Nathan Adams、Elisha Chirchir / CreateSpace Independent Publishing Platform / 2017-4-21 / USD 39.15
Operating System Algorithms will walk you through in depth examples of algorithms that you would find in an operating system. Selected algorithms include process and disk scheduling.一起来看看 《Operating System Algorithms》 这本书的介绍吧!