v4.6.7主要是Bug修复版本,没有向后不兼容的变化。该版本修复了Http\Response::end()方法总是返回true的问题,修改了output_buffer_size的默认值。在之前的版本中,output_buffer_size的默认值为2M。由于output_buffer_size的限制,如果你调用end发送的内容大于这个限制时,响应会失败,会抛出如下错误:useSwoole\Http\Server;useSwoole\Http\Request;useSwoole\Http\Response;$http=newServer('127.0.0.1',9501);$http->set(['http_compression'=>false,'buffer_output_size'=>128*1024,]);$http->on('request',function(Request$request,Response$response){assert($response->end(str_repeat('A',256*1024))===false);assert(swoole_last_error()===SWOOLE_ERROR_DATA_LENGTH_TOO_LARGE);});$http->开始();使用以上代码重现错误WARNINGfinish(ERRNO1203):Thelengthofdata[262144]exceedstheoutputbuffersize[131072],pleaseusingthesendfile,chunkedtransfermodeoradjusttheoutput_buffer_size之前的解决方案是:使用sendfile,写入或调整output_buffer_size,但在这个版本中,output_buffer_size的默认值增加到unsignedINT(UINT_MAX)的最大值。从4.5版本开始,Worker进程不再使用共享内存,全部使用UnixSocket管道代替,所以不用需要预分配内存的output_buffer_size参数只是一个限制,将其设置为比较大的参数不会造成额外的内存占用。同时修复了end返回值始终为true的问题。上述代码出错后,没有响应成功,返回值为false。()函数(#4190)(@matyhtf)修复信号无法重复注册的问题(#4170)(@matyhtf)修复在OpenBSD/NetBSD上编译失败的问题(#4188)(#4194)(@devnexen)修复监听可写事件时onClose事件丢失的特殊情况(#4204)(@matyhtf)修复SymfonyHttpClient使用原生curl的问题(#4204)(@matyhtf)修复Http\Response::end()方法为alwaysreturntrue问题(swoole/swoole-src@66fcc35)(@matyhtf)修复PDOStatementProxy产生的PDOException(swoole/library#104)(@twose)内核重构workerbuffer,事件数据添加msgidflag(#4163)(@matyhtf)修改RequestEntityTooLarge日志级别为警告级别(#4175)(@sy-records)替换inet_ntoa和inet_aton函数(#4199)(@remicollet)修改output_buffer_size默认值为UINT_MAX(swoole/swoole-src@46ab345))(@matyhtf)
