当前位置: 首页 > 后端技术 > PHP

Swoolev4.6.2发布,bug修复版

时间:2023-03-30 00:15:46 PHP

v4.6.2版本主要是一个错误修复版本,没有向后不兼容的更改。新增Coroutine\Socket->recvLine()和Coroutine\Socket->readWithBuffer()方法,解决socket_read兼容问题,使用recv(1)逐字节接收时产生大量系统调用。同时,Response\的create()方法可以独立于Server使用,如:useSwoole\Coroutine\Server;useSwoole\Coroutine\Server\Connection;useSwoole\Http\Request;useSwoole\Http\Response;Swoole\Coroutine\run(function(){$server=newServer('0.0.0.0',9501,false);go(function()use($server){$server->handle(function(连接$conn)使用($server){$req=Request::create();while(true){$data=$conn->recv();if(strlen($data)!=$req->parse($data)或$req->isCompleted()){break;}}var_dump($req->get);$resp=Response::create([$conn->exportSocket(),$req]);$resp->header('X-Server','swoole');$resp->end('Hello,Swoole');$服务器->关机();});$服务器->开始();});});启动后使用curl发起请求$curl-Ihttp://127.0.0.1:9501/\?hello\=swooleHTTP/1.1200OKX-Server:swooleServer:swoole-http-serverConnection:keep-aliveContent-Type:text/htmlDate:Mon,25Jan202110:58:31GMTContent-Length:13$curlhttp://127.0.0.1:9501/\?hello\=swooleHello,Swoole和终端会打印GET参数数组(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)fixPHP8下Coroutine::defercoredump问题(#3997)(@huanghantao)修复当使用线程上下文时,错误设置Coroutine\Socket::errCode问题(swoole/swoole-src@004d08a)(@matyhtf)修复最新macos下Swoole编译失败的问题(#4007)(@matyhtf)修复md5_file参数传到url时,phpstreamcontext是空指针的问题(#4016)(@ZhiyangLeeCN)内核使用AIO线程池hookstdio(解决之前把stdio当成socket导致的多进程读写问题)(#4002)(@matyhtf)重构HttpContext(#3998)(@matyhtf)重构Process::wait()(#4019)(@matyhtf)