🚀 Coroutine-based concurrency library for PHP
HTTP coroutine client
@NathanFreemanpdo_odbc
@NathanFreemansocket_import_stream()
@YurunsoftContext::parse_multipart_data()
unable to handle empty request body @NathanFreemanPostgreSQL coroutine client
where the parameters are not working @Yurunsoftcurl
crashes during destruction @matyhtfSwoole 5.x
and the latest version of xdebug
@NathanFreemanclass not found
error caused by coroutine switching during the process of class autoloading
@YurunsoftSwoole
on OpenBSD
@ChihHao-Su @twosehttp协程客户端
内存泄漏问题 (@NathanFreeman)
pdo_odbc
无法协程化的问题 (@NathanFreeman)
socket_import_stream()
执行错误的问题 (@Yurunsoft)
Context::parse_multipart_data()
无法处理空请求体的问题 (@NathanFreeman)
PostgreSQL协程客户端
参数不起作用的问题 (@Yurunsoft)
curl
在析构时会崩溃的bug (@matyhtf)
Swoole5.x
与新版的xdebug
不兼容问题 (@NathanFreeman)
自动加载
的过程中发生协程切换导致提示类不存在
的问题 (@Yurunsoft)
OpenBSD
编译swoole
的问题 (@ChihHao-Su) (@twose)
pdo_pgsql
coroutine hook (@matyhtf)
pdo_odbc
coroutine hook (@matyhtf)
pdo_oci
coroutine hook (@NathanFreeman)
pdo_sqlite
coroutine hook (@NathanFreeman)
pdo_pgsql
, pdo_odbc
, pdo_oci
, pdo_sqlite
(@NathanFreeman)
Http\Server
, can increase up to 60%
in extreme cases (@matyhtf) (@NathanFreeman)
WebSocket coroutine client
(@matyhtf) (@NathanFreeman)
HTTP coroutine server
was not causing the client to exit (@matyhtf)
--enable-thread-context
option during compilation was causing Process::signal()
to not work (@NathanFreeman)
SWOOLE_BASE
mode (@Yunrunsoft)
stream_select()
function (@Yunrunsoft) (@NathanFreeman)
Http2\Request::$usePipelineRead
, which was causing a warning to be thrown in PHP 8.2 environment (@NathanFreeman)
SWOOLE_BASE
mode (@dongzitai) (@NathanFreeman)
Http\Response::cookie()
(@NathanFreeman)
SWOOLE_BASE
mode (@NathanFreeman)
pdo_pgsql
的协程化支持 (@matyhtf)
pdo_odbc
的协程化支持 (@matyhtf)
pdo_oci
的协程化支持 (@NathanFreeman)
pdo_sqlite
的协程化支持 (@NathanFreeman)
pdo_pgsql
,pdo_odbc
,pdo_oci
,pdo_sqlite
的连接池配置。(@NathanFreeman)
Http\Server
的性能,极限情况下可以提升60%
(@matyhtf) (@NathanFreeman)
WebSocket协程客户端
每次请求造成的内存泄漏 (@matyhtf) (@NathanFreeman)
http协程服务端
优雅退出导致客户端不退出的问题 (@matyhtf)
--enable-thread-context
选项会导致Process::signal()
不起作用(@NathanFreeman)
在SWOOLE_BASE模式
下,当进程非正常退出时,连接数统计错误的问题 (@Yunrunsoft)
stream_select()
函数签名错误 (@Yunrunsoft) (@NathanFreeman)
Http2\Request::$usePipelineRead
拼写错误导致在PHP8.2的环境下会抛出警告。 (@NathanFreeman)
SWOOLE_BASE
模式下的内存泄漏问题 (@dongzitai) (@NathanFreeman)
Http\Response::cookie()
设置cookie
的过期时间导致的内存泄漏问题 (@NathanFreeman)
SWOOLE_BASE
模式下的连接泄漏问题 (@NathanFreeman)
--with-nghttp2_dir
option, Use the system nghttp2 libraryProcess\Pool::sendMessage()
max-age
to Http\Response:cookie()
methodCoroutine::printBackTrace()
and debug_print_backtrace()
Accept-Encoding
header without compression libraryServer::send()
, Http\Response::end()
, Http\Response::write()
, WebSocket/Server::push()
Table::getMemorySize()
before add columns$who
parameter to Process::setPriority/getPriority
Coroutine\Socket::getBoundCid()
Coroutine\Socket::recvLine/recvWithBuffer
$length
parameter to 65536
Coroutine\Client
, Coroutine\Http\Client
, Coroutine\Http2\Client
, allow direct operation of socket resourcesHttp\Server
to send empty file to http2 clientCoroutine\Http\Server
. When server shuting down, the client connection will no longer be forcibly closed, and only stop listening to new requestspcntl_rfork
pcntl_sigwaitinfo
to list of unsafe function, will be closed when coroutine container startsThe
version-5.0.2
has no backwards incompatible changes
PHP-8.2
ext-soap
Coroutine::printBackTrace()
and debug_print_backtrace()
Event::add()
support for sockets resourceskeep-alive
when server sends connection closeAccept-Encoding
header without compression libraryServer::taskWaitMulti()
, no blocking in coroutine environmenttable::getMemorySize()
before add columnsexpire
parameter name of Http\Response::setCookie()
to expires
, fix #4780PHP-8.2
Event::add()
support for sockets resourcesHttp\Client::sendfile()
, support large files over 4GServer::taskWaitMulti()
, support coroutine environmentMinimum PHP version requirement is
8.0
max_concurrency
option for Servermax_retries
option for Coroutine\Http\Clientname_resolver
global optionupload_max_filesize
option for ServerCoroutine::getExecuteTime()
Event::wait()
in shutdown functionServer::tick/after/clearTimer/defer
aliases--enable-http2
/--enable-swoole-json
, adjusted to be enable by defaultCoroutine\Redis
and Coroutine\MySQL