✨ New Feature:
- Added
Swoole\Thread\Map::find()
method. @matyhtf - Added
Swoole\Thread\ArrayList::find()
method. @matyhtf - Added
Swoole\Thread\ArrayList::offsetUnset()
method. @matyhtf - Added
Swoole\Process::getAffinity()
method. @matyhtf - Added
Swoole\Thread::setName()
method. @matyhtf - Added
Swoole\Thread::setAffinity()
method. @matyhtf - Added
Swoole\Thread::getAffinity()
method. @matyhtf - Added
Swoole\Thread::setPriority()
method. @matyhtf - Added
Swoole\Thread::getPriority()
method. @matyhtf - Added
Swoole\Thread::gettid()
method. - The file asynchronous engine
iouring
supports multi-threaded polling modeIORING_SETUP_SQPOLL
. @NathanFreeman - Added
iouring_workers
to modify the number ofiouring
threads. @NathanFreeman - Added
iouring_flags
to support modifying theiouring
working mode. @NathanFreeman - Added
Swoole\Thread\Barrier
for multi-thread synchronization barrier. @matyhtf - Added new function and class to set cookies. @matyhtf @NathanFreeman
New Cookie API
$server->on('request', function (Swoole\Http\Request $request, Swoole\Http\Response $response) use ($pm) {
$cookie = new Swoole\Http\Cookie();
$cookie->withName('key1')
->withValue('val1')
->withExpires(time() + 84600)
->withPath('/')
->withDomain('id.test.com')
->withSecure(true)
->withHttpOnly(true)
->withSameSite('None')
->withPriority('High')
->withPartitioned(true);
$response->setCookie($cookie);
$response->end("<h1>Hello Swoole. #" . rand(1000, 9999) . "</h1>");
});
🐛 Bug Fixed:
- Fixed the dynamic property issue in
Swoole\Http2\Request
. @guandeng - Fixed the occasional resource unavailability issue in the
pgsql
coroutine client. @NathanFreeman - Fixed the issue of 503 errors due to not resetting related parameters during process restart. @matyhtf
- Fixed the inconsistency between
$request->server['request_method']
and$request->getMethod()
whenHTTP2
is enabled. @matyhtf - Fixed incorrect
content-type
when uploading files. @matyhtf - Fixed code errors in the
http2
coroutine client. @matyhtf - Fixed the missing
worker_id
property inSwoole\Server
. @cjavad - Fixed errors related to
brotli
inconfig.m4
. @fundawang - Fixed the invalid
Swoole\Http\Response::create
under multi-threading. @matyhtf - Fixed compilation errors in the
macos
environment. @matyhtf - Fixed the issue of threads not being able to exit safely. @matyhtf
- Fixed the issue where the static variable for response time returned by
Swoole\Http\Response
in multi-threaded mode was not generated separately for each thread. @matyhtf @NathanFreeman
⭐️ Kernel Optimization:
- Upgraded the Oracle database version for CI testing. @gvenzl
- Refactored and optimized the underlying related code of
swoole
. @matyhtf - Optimized the underlying logic of
sendfile
. @matyhtf - Optimized parameter parsing. @matyhtf
- Replaced
PHP_DEF_HAVE
withAC_DEFINE_UNQUOTED
inconfig.m4
. @petk - Optimized the logic related to
heartbeat
,shutdown
, andstop
for the server in multi-threaded mode. @matyhtf - Optimized to avoid linking
librt
whenglibc
version is greater than 2.17. @matyhtf - Enhanced the HTTP client to accept duplicate request headers. @matyhtf
- Optimized
Swoole\Http\Response::write()
. @matyhtf Swoole\Http\Response::write()
can now send HTTP/2 protocol. @matyhtf- Compatible with
PHP 8.4
. @matyhtf @NathanFreeman - Added the ability for asynchronous writing at the underlying socket level. @matyhtf
- Optimized
Swoole\Http\Response
. @NathanFreeman - Improved underlying error messages. @matyhtf
- Supported sharing PHP native sockets in multi-threaded mode. @matyhtf
- Optimized static file service and fixed static file path error issues. @matyhtf
❌ Deprecated:
- Removed
Swoole\Coroutine\System::fread()
,Swoole\Coroutine\System::fwrite()
, andSwoole\Coroutine\System::fgets()
methods.
😊 Thank you
- Thank you for your contribution to Swoole v6.0.0. Wish you good health, all the best, and smooth work.
✨ 新特性:
- 新增
Swoole\Thread\Map::find()
方法。 @matyhtf - 新增
Swoole\Thread\ArrayList::find()
方法。 @matyhtf - 新增
Swoole\Thread\ArrayList::offsetUnset()
方法。 @matyhtf - 新增
Swoole\Process::getAffinity()
方法。 @matyhtf - 新增
Swoole\Thread::setName()
方法。 @matyhtf - 新增
Swoole\Thread::setAffinity()
方法。 @matyhtf - 新增
Swoole\Thread::getAffinity()
方法。 @matyhtf - 新增
Swoole\Thread::setPriority()
方法。 @matyhtf - 新增
Swoole\Thread::getPriority()
方法。 @matyhtf - 新增
Swoole\Thread::gettid()
方法。 - 文件异步引擎
iouring
支持多线程轮询模式IORING_SETUP_SQPOLL
。 @NathanFreeman - 新增
iouring_workers
修改iouring
线程数。 @NathanFreeman - 新增
iouring_flags
支持修改iouring
工作模式。 @NathanFreeman - 增加
Swoole\Thead\Barrier
多线程同步屏障。@matyhtf - 增加新的设置cookie的函数。 @matyhtf @NathanFreeman
🐛 Bug修复:
- 修复
Swoole\Http2\Request
动态属性问题。 @guandeng - 修复
pgsql
协程客户端偶发资源不可用的问题。 @NathanFreeman - 修复进程重启,没有重置相关参数导致503错误的问题。@matyhtf
- 修复开启
HTTP2
时,$request->server['request_method'] 与 $request->getMethod() 的结果不一致。 @matyhtf - 修复上传文件时,不正确的
content-type
。 @matyhtf - 修复
http2
协程客户端的代码错误。 @matyhtf - 修复
Swoole\Server
缺少属性worker_id
的问题。 @cjavad - 修复
config.m4
有关brotli
错误的问题。 @fundawang - 修复 多线程下
Swoole\Http\Response::create
无效。 @matyhtf - 修复
macos
环境下编译错误。 @matyhtf - 修复线程无法安全退出的问题。 @matyhtf
- 修复多线程模式下,
Swoole\Http\Response
返回响应时间的静态变量没有各个线程各自生成一份的问题。 @matyhtf @NathanFreeman
⭐️ 内核优化:
- 升级CI测试的oracle数据库版本。 @gvenzl
- 重构优化
swoole
底层相关代码。 @matyhtf - 优化底层
sendfile
的相关逻辑。 @matyhtf - 优化参数解析。 @matyhtf
config.m4
中用AC_DEFINE_UNQUOTED
替换PHP_DEF_HAVE
。 @petk- 优化多线程模式下,server的
heartbeat
,shutdown
和stop
的相关逻辑。 @matyhtf - 优化
glibc
版本高于2.17时,不需要链接librt
。 @matyhtf - 加强
http
客户端可以接受重复的请求头。 @matyhtf - 优化
Swoole\Http\Response::write()
。 @matyhtf Swoole\Http\Response::write()
现在可以发送http2
协议。 @matyhtf- 兼容
PHP8.4
。 @matyhtf @NathanFreeman - 增加底层
socket
异步写入的能力。 @matyhtf - 优化
Swoole\Http\Response
。 @NathanFreeman - 优化底层错误信息。 @matyhtf
- 多线程模式下,支持共享php原生
socket
。 @matyhtf - 优化静态文件服务,修复静态文件路径错误问题。 @matyhtf
❌ 废弃:
- 移除
Swoole\Coroutine\System::fread()
,Swoole\Coroutine\System::fwrite()
和Swoole\Coroutine\System::fgets()
方法
😊 致谢
- 感谢你们为Swoole v6.0.0做出的贡献,祝愿大家身体健康,万事如意,工作顺利。