v4.6.2 版本主要是一个 Bug 修复版本,没有向下不兼容改动。
新增了 Coroutine\Socket->recvLine() 和 Coroutine\Socket->readWithBuffer() 方法
Coroutine\Socket->recvLine()
Coroutine\Socket->readWithBuffer()
分别用于解决 socket_read 兼容性问题和使用 recv(1) 逐字节接收时产生大量系统调用问题
recv(1)
同时增强了 Response\create() 方法,可以独立于 Server 使用,如:
Response\create()
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" }
下面是完整的更新日志:
Http\Request\getMethod()
Coroutine\Redis->hExists
socket_read
Coroutine::defer
Coroutine\Socket::errCode
Process::wait()
评论删除后,数据将无法恢复
Swoole v4.6.2 版本发布,Bug 修复版本
v4.6.2 版本主要是一个 Bug 修复版本,没有向下不兼容改动。
新增了
Coroutine\Socket->recvLine()
和Coroutine\Socket->readWithBuffer()
方法分别用于解决 socket_read 兼容性问题和使用
recv(1)
逐字节接收时产生大量系统调用问题同时增强了
Response\create()
方法,可以独立于 Server 使用,如:启动后使用 curl 发起请求
而终端会打印请求中的 GET 参数
下面是完整的更新日志:
新增 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)Coroutine\Socket::errCode
的问题 (swoole/swoole-src@004d08a) (@matyhtf)内核
Process::wait()
(#4019) (@matyhtf)