Swoole v4.6.2 版本发布,Bug 修复版本

简介: v4.6.2 版本主要是一个 Bug 修复版本,没有向下不兼容改动。

新增了 Coroutine\Socket->recvLine()Coroutine\Socket->readWithBuffer() 方法

分别用于解决 socket_read 兼容性问题和使用 recv(1) 逐字节接收时产生大量系统调用问题

同时增强了 Response\create() 方法,可以独立于 Server 使用,如:

use Swoole\Coroutine\Server;
use Swoole\Coroutine\Server\Connection;
use Swoole\Http\Request;
use Swoole\Http\Response;
Swoole\Coroutine\run(function () {
    $server = new Server('0.0.0.0', 9501, false);
    go(function () use ($server) {
        $server->handle(function (Connection $conn) use ($server) {
            $req = Request::create();
            while(true) {
                $data = $conn->recv();
                if (strlen($data) != $req->parse($data) or $req->isCompleted()) {
                    break;
                }
            }
            var_dump($req->get);
            $resp = Response::create([$conn->exportSocket(), $req]);
            $resp->header('X-Server', 'swoole');
            $resp->end('Hello, Swoole');
            $server->shutdown();
        });
        $server->start();
    });
});

启动后使用 curl 发起请求


$ curl -I http://127.0.0.1:9501/\?hello\=swoole
HTTP/1.1 200 OK
X-Server: swoole
Server: swoole-http-server
Connection: keep-alive
Content-Type: text/html
Date: Mon, 25 Jan 2021 10:58:31 GMT
Content-Length: 13
$ curl http://127.0.0.1:9501/\?hello\=swoole
Hello, Swoole

而终端会打印请求中的 GET 参数


array(1) {
  ["hello"]=>
  string(6) "swoole"
}

下面是完整的更新日志:

新增 API


  • 新增 Http\Request\getMethod() 方法 (#3987) (@luolaifa000)
  • 新增 Coroutine\Socket->recvLine() 方法 (#4014) (@matyhtf)
  • 新增 Coroutine\Socket->readWithBuffer() 方法 (#4017) (@matyhtf)

增强


  • 增强 Response\create() 方法,可以独立于 Server 使用 (#3998) (@matyhtf)
  • 支持 Coroutine\Redis->hExists 在设置了 compatibility_mode 之后返回 bool 类型 (swoole/swoole-src@b8cce7c) (@matyhtf)
  • 支持 socket_read 设置 PHP_NORMAL_READ 选项 (swoole/swoole-src@b1a0dcc) (@matyhtf)

修复


  • 修复 Coroutine::defer 在 PHP8 下 coredump 的问题 (#3997) (@huanghantao)
  • 修复当使用 thread context 的时候,错误设置 Coroutine\Socket::errCode 的问题 (swoole/swoole-src@004d08a) (@matyhtf)
  • 修复在最新的 macos 下 Swoole 编译失败的问题 (#4007) (@matyhtf)
  • 修复当 md5_file 参数传入 url 导致 php stream context 为空指针的问题 (#4016) (@ZhiyangLeeCN)

内核


  • 使用 AIO 线程池 hook stdio(解决之前把 stdio 视为 socket 导致的多协程读写问题) (#4002) (@matyhtf)
  • 重构 HttpContext (#3998) (@matyhtf)
  • 重构 Process::wait() (#4019) (@matyhtf)
目录
相关文章
|
6月前
|
Shell 开发工具 git
项目出bug,找不到bug,如何拉回之前的版本
项目出bug,找不到bug,如何拉回之前的版本
关于win10 18362版之后的版本一个Bug
关于win10 18362版之后的版本一个Bug
203 0
关于win10 18362版之后的版本一个Bug
|
PHP
Swoole v4.6.1 版本发布,Bug 修复版本
v4.6.1 版本主要是一个 Bug 修复版本,没有向下不兼容改动。
162 0
|
API PHP
Swoole v4.7.1 版本发布,Bug 修复版本
v4.7.1 版本主要是一个 Bug 修复版本,没有向下不兼容改动。
138 0
|
Unix PHP
Swoole v4.6.6 版本发布,Bug 修复版本
v4.6.6 版本主要是一个 Bug 修复版本,没有向下不兼容改动。
95 0
|
网络安全
Swoole v4.5.11 版本发布,Bug 修复版本
v4.5 作为 LTS 分支,此次发布 v4.5.11 版本合并了在 v4.6.0 版本中修复的 Bug,没有增加新特性,也没有不兼容改动。
184 0
|
网络协议 Unix API
Swoole v4.6.4 版本发布,Bug 修复版本
v4.6.4 版本主要是一个 Bug 修复版本,没有向下不兼容改动。
167 0
|
PHP
Swoole v4.6.7 版本发布,Bug修复版本
v4.6.7 版本主要是一个 Bug 修复版本,没有向下不兼容改动。
145 0
|
Go 网络安全 API
Swoole v4.6.3 版本发布,祝大家 2021 春节快乐
v4.6.3 版本主要是一个 Bug 修复版本,没有向下不兼容改动。
116 0
|
NoSQL 关系型数据库 MySQL
Swoole v4.4.20版本发布
v4.4.20,这是一个 BUG 修复版本, 没有任何向下不兼容改动
144 0