Swoft 2.0.5 更新,新增高效秒级定时任务、异常管理组件
2024-09-05 12:51:38
什么是 Swoft ?
Swoft 是一款基于 Swoole 扩展实现的 PHP 微服务协程框架。Swoft 能像 Go 一样,内置协程网络服务器及常用的协程客户端且常驻内存,不依赖传统的 PHP-FPM。有类似 Go 语言的协程操作方式,有类似 Spring Cloud 框架灵活的注解、强大的全局依赖注入容器、完善的服务治理、灵活强大的 AOP、标准的 PSR 规范实现等等。
Swoft 通过长达三年的积累和方向的探索,把 Swoft 打造成 PHP 界的 Spring Cloud, 它是 PHP 高性能框架和微服务治理的最佳选择。
高效秒级定时任务
如下简单几行代码,就定义了一个每秒执行的定时任务,完全可以取代系统定时任务。
<?php declare(strict_types=1);
namespace App\Crontab;
use Swoft\Crontab\Annotaion\Mapping\Cron;
use Swoft\Crontab\Annotaion\Mapping\Scheduled;
/**
* Class CronTask
*
* @since 2.0
*
* @Scheduled()
*/
class CronTask
{
/**
* @Cron("* * * * * *")
*/
public function secondTask()
{
printf("second task run: %s ", date('Y-m-d H:i:s', time()));
}
}
定时任务跟随服务一起启动,将看到如下显示:
异常管理
开发过程中,如果错误提示是一串字符串,不方便业务排除问题,如果使用该组件,所有错误信息将如下显示
更新内容
修复(Fixed):
- 修复提前中断请求逻辑可能导致无法正确的格式化对应的Content-Type f031398
- 修复使用sgo创建子协程,在结束时没有清理与顶级协程的映射关系 de11ae5b
- 修复 Xml 格式解析方法 24d0038
- 修复类代理 Unique 字符串问题 444ddeb
- 修复
context()->get()
存在问题以及废弃Context::mustGet()
方法 6acc1b5 - 修复接口注入,类名访问错误 2d9a31f
- 修复 模型使用
paginate
方法, 结果集没有映射字段3027287 - 修复 websocket server 里,当有多个worker,主动关闭非当前worker连接时报错 7666969
更新(Update):
- 默认的 worker num 设置通过
swoole_cpu_num
函数获取 553f6500 - 验证器调整成,默认非必须,用户自己开启 e5b258d
- 不再抛出swoft内部的
ContainerException
到用户使用层 1e74893 - console output 新增
confirm
select
等交互方法 0181138a
增强(Enhancement):
- console 命令选项设置
CommandOption
,现在允许选项描述为多行信息 e5914983 - websocket server 的全部消息发送方法,支持传入
opcode
参数 dc164ffe9 - websocket 模块允许设置当前模块的默认
opcode
,用于自动处理返回数据设置opcode
9e3e9672 - 增强 websocket 相关类,现在消息处理方法允许注入更多数据对象类型
Request
Response
3d6c60b4 - 当worker退出时,websocket server 会自动关闭所有连接 5ea10ecc
- Add Timer 定时器封装 eb92ee6
- Add Coroutine 方法封装 d8c2b88
2.0.5+ 验证器默认关闭,需要开发者手动开启(https://www.swoft.org/docs/2....
资源
- Gitee: https://gitee.com/swoft/swoft
- GitHub: https://github.com/swoft-cloud/swoft
- 官网:https://www.swoft.org
- 文档:https://www.swoft.org/docs
最新文章
- kali安装谷歌浏览器的方法及启动问题的解决
- 【译】About the Java Technology
- MAC 卸载 openfire
- spring boot 初试,springboot入门,springboot helloworld例子
- htaccess rewrites重写规则实例
- backbone案例
- 为什么要使用Nginx?
- Webform之FileUpload(上传按钮控件)简单介绍及下载、上传文件时图片预览
- 虚拟机linux挂载光盘显示:mount: you must specify the filesystem type
- jsp基础语言-jsp代码段
- windows server 2008 R2服务器无法通过ShellClass获取mp3音乐时长
- 我的IdentityServer目录
- DP专题:划分数问题
- java数据写入Excel
- Unity3D学习笔记(三十七):顶点偏移和溶解
- AssetBundleMaster
- docker 带参数启动 配合springboot profile
- 快速部署 Kubeadm 1.13 集群(ETCD)
- jrebel+idea 进行热部署配置
- Java I/O系列(二)ByteArrayInputStream与ByteArrayOutputStream源码分析及理解