什么是 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....

资源

Swoft 2.0.5 更新,新增高效秒级定时任务、异常管理组件的更多相关文章

  1. Linux下实现秒级定时任务的两种方案

    Linux下实现秒级定时任务的两种方案(Crontab 每秒运行): 第一种方案,当然是写一个后台运行的脚本一直循环,然后每次循环sleep一段时间. while true ;do command s ...

  2. Linux下实现秒级定时任务的两种方案(crontab 每秒运行)

    第一种方案,当然是写一个后台运行的脚本一直循环,然后每次循环sleep一段时间. while true ;do command sleep XX //间隔秒数 done 第二种方案,使用crontab ...

  3. Linux Crontab Shell脚本实现秒级定时任务

    一.编写Shell脚本crontab.sh #!/bin/bash step=1 #间隔的秒数,不能大于60 for (( i = 0; i < 60; i=(i+step) )); do $( ...

  4. Linux crontab 实现秒级定时任务

    1   crontab 的延时: 原理:通过延时方法 sleep N  来实现每N秒执行. crontab -e 输入以下语句,然后 :wq 保存退出. * * * * * /usr/bin/curl ...

  5. SQL Server大量数据秒级插入/新增/删除

    原文:SQL Server大量数据秒级插入/新增/删除 1.快速保存,该方法有四个参数,第一个参数为数据库连接,第二个参数为需要保存的DataTable,该参数的TableName属性需要设置为数据库 ...

  6. QPS从0到4000请求每秒,谈达达后台架构演化之路(转载)

    https://blog.csdn.net/czbing308722240/article/details/52350219 QPS从0到4000请求每秒,谈达达后台架构演化之路   达达是全国领先的 ...

  7. Docker 1.13.0 详细更新日志

    本文讲的是Docker 1.13.0 详细更新日志[编者的话]Docker发布1.13.0版本,此次版本更新内容较多,以下为该版本具体的变更. 构建 添加在构建时可以指定镜像用作高速缓存源的功能. 这 ...

  8. plain framework 1 1.0.4 更新 稳定版发布

    PF由于各种因素迟迟不能更新,此次更新主要是更新了以往和上个版本出现的内存问题,该版本较为稳定,如果有用到的朋友请更新至此版本. PF 1.0.4 修复1.0.0.3更新后产生的内存问题,可能导致网络 ...

  9. 关于SubSonic3.0插件更新字符串过长引发的System.Data.SqlClient.SqlException的异常修复

    最近公司客服提交了个BUG,说是更新产品详细信息时,有的可以有的更新不了,前段时间一直没空所以暂时放下,刚才又出现这个问题,所以马上处理了一下. 打开项目解决方案,进入DEBUG模式,拿到操作的数据提 ...

随机推荐

  1. 7.9模拟赛T1图的遍历(dfs)

    图的遍历(dfs) [题目描述] 对于一个有向图G来说,我们存在一个经典的遍历算法,就是DFS (深度优先搜索遍历).将G以1号点为起点进行DFS后,我们可以 得到G的一棵DFS遍历树T.就此,我们可 ...

  2. Android_activity实现一个简单的新建联系表

    项目展示: 第一个Activity用于显示联系人信息 第二个Activity输入联系人信息 要求: 运行“新建联系人”程序,结果如下图所示: 点击“新建联系人”按钮,打开输入信息界面并输入姓名.公司. ...

  3. HDU 5818 Joint Stacks ——(栈的操作模拟,优先队列)

    题意:有两个栈A和B,有3种操作:push,pop,merge.前两种都是栈的操作,最后一种表示的是如果“merge A B”,那么把B中的元素全部放到A中,且满足先入后出的栈原则. 分析:显然,我们 ...

  4. HDU 5795 A Simple Nim ——(Nim博弈 + 打表)

    题意:在nim游戏的规则上再增加了一条,即可以将任意一堆分为三堆都不为0的子堆也视为一次操作. 分析:打表找sg值的规律即可. 感想:又学会了一种新的方法,以后看到sg值找不出规律的,就打表即可~ 打 ...

  5. Go 结构体与初始化

    Go 通过类型别名(alias types)和结构体的形式支持用户自定义类型. 结构体是复合类型,当需要定义类型,它由一系列属性组成,每个属性都有自己的类型和值的时候,就应该使用结构体,它把数据聚集在 ...

  6. laravel 5以后数据库插入自动转化方式

  7. ftp相关

    已经存在虚拟账户 添加新账户 .在/etc/vsftpd/user.txt里面配置用户名密码 单行是用户名 双行是密码 .导入新用户密码 db_load -T -t hash -f /etc/vsft ...

  8. 解释HTTP中Get和Post。它们有什么区别,哪个使用时更加安全?

    Get和Post都是浏览器向网页服务器提交数据的方法. Get把要提交的数据编码在url中,比如/workinfo.jsp/mianshiti?key1=value1&key2=value2中 ...

  9. IIS7 部署MVC 运行不了 注意事项

    经常安装完iis7或者7.5后,部署MVC3.运行后提示 403 找不到目录. 解决办法:需要重新注册下iis C:\Windows\Microsoft.NET\Framework64\v4.0.30 ...

  10. 使用oracle的存储过程的例子

    十几年没有用oracle的存储过程了,有些东西已经忘了,没有想到今天又要用.在这里写个例子.它演示了存储过程的格式,游标的使用,循环.判断的使用,还有直接执行一个拼接的SQL的用法.以下是代码: cr ...