Releases · swoole/swoole-src
v5.1.8 🐛 Bug FixesHeartfelt thanks to all contributors @NathanFreeman @xuanyanwow @deminy for your professional dedication. Swoole grows stronger because of you! Wishing our open-source community members good health, success in all endeavors, and smooth work.
🐛 Bug 修复诚挚感谢 @NathanFreeman @xuanyanwow @deminy 所有贡献者的专业付出,Swoole 因你们而更强大!愿开源社区伙伴身体健康,万事如意,工作顺利。
v6.0.2 ✨ New Features:Swoole\Thread::yield()
, Swoole\Thread::activeCount()
, and Swoole\Thread::isAlive()
methods. @matyhtfSWOOLE_THREAD
mode would cause exceptions. @matyhtfswoole.enable_fiber_mock
. @NathanFreemanRESP2
protocol. When formatting strings that do not comply with this protocol, an exception will be thrown instead of logging. @matyhtfSwoole\Thread::yield()
,Swoole\Thread::activeCount()
和Swoole\Thread::isAlive()
方法。 @matyhtfSWOOLE_THREAD
模式下,使用单线程模式和设置心跳会引发异常的问题。 @matyhtfswoole.enable_fiber_mock
后的段错误问题。 @NathanFreemanRESP2
协议,当格式化不符合该协议的字符串时,将抛出异常而不是记录日志。 @matyhtfSwoole\Http2\Request
would throw an exception. @xuanyanwow @guandengSwoole\Http2\Request
动态创建类的属性抛出异常的问题。 @xuanyanwow @guandengSWOOLE_THREAD
mode where the process could not exit properly due to not removing the listening event. @NathanFreemansingle_thread
configuration was enabled. @matyhtfconfig.m4
. @matyhtfSwoole\Process\Pool
where processes could not exit properly upon timeout. @matyhtfSWOOLE_THREAD
mode where calling putenv
caused the program to crash. @matyhtfSWOOLE_THREAD
mode where event callback functions could not be set for independent ports. @matyhtfSWOOLE_THREAD
mode where runtime parameters could not be retrieved in events such as onWorkerStart
. @matyhtfswoole_substr_json_decode
/swoole_substr_unserialize
functions. @Applaconfig.m4
. @remicolletSWOOLE_THREAD
mode where the heartbeat detection did not function properly. @matyhtfstream factory
and stream ops
in the PHP underlying is not thread-safe, in multi-thread mode, only the main thread is allowed to modify these runtime configurations before creating child threads. @matyhtfSwoole v6.0.1
. Wish you good health, all the best, and smooth work.SWOOLE_THREAD
模式下,因为没有移除监听事件导致进程无法正常退出的问题。 @NathanFreemansingle_thread
配置时,无法上传大文件的问题。 @matyhtfconfig.m4
中相同的变量,会导致编译过程找不到具体的文件路径的问题。 @matyhtfSwoole\Process\Pool
中进程超时无法正常退出的问题。 @matyhtfSWOOLE_THREAD
模式下,调用putenv
导致程序崩溃的问题。 @matyhtfSWOOLE_THREAD
模式下,无法为独立的端口设置事件回调函数的问题。 @matyhtfSWOOLE_THREAD
模式下,onWorkerStart
等事件中无法获取到运行时的各项参数的问题。 @matyhtfswoole_substr_json_decode
/swoole_substr_unserialize
函数的参数判断逻辑。 @Applaconfig.m4
中的CPU亲和性设置的问题。 @remicolletSWOOLE_THREAD
模式下,心跳检测不起作用的问题。 @matyhtfstream factory
和stream ops
依赖的运行时配置不是线程安全的,因此多线程模式下只允许主线程在还没创建子线程之前修改这些运行时配置。 @matyhtfSwoole v6.0.1
做出的贡献,祝愿大家身体健康,万事如意,工作顺利。--enable-swoole-thread
option to the configure command to activate it.Swoole\Thread
. @matyhtfSwoole\Thread\Lock
. @matyhtfSwoole\Thread\Atomic
, Swoole\Thread\Atomic\Long
. @matyhtfSwoole\Thread\Map
, Swoole\Thread\ArrayList
, Swoole\Thread\Queue
. @matyhtfio_uring
as the underlying engine for file asynchronous operations. When liburing is installed and Swoole is compiled with the --enable-iouring option, the asynchronous operations of functions such as file_get_contents, file_put_contents, fopen, fclose, fread, fwrite, mkdir, unlink, fsync, fdatasync, rename, fstat, lstat, and filesize will be implemented by io_uring. @matyhtf @NathanFreemanBoost Context
to version 1.84. Now, Loongson CPUs can also support coroutines. @NathanFreemanSwoole\Thread\Map::find()
method. @matyhtfSwoole\Thread\ArrayList::find()
method. @matyhtfSwoole\Thread\ArrayList::offsetUnset()
method. @matyhtfSwoole\Process::getAffinity()
method. @matyhtfSwoole\Thread::setName()
method. @matyhtfSwoole\Thread::setAffinity()
method. @matyhtfSwoole\Thread::getAffinity()
method. @matyhtfSwoole\Thread::setPriority()
method. @matyhtfSwoole\Thread::getPriority()
method. @matyhtfSwoole\Thread::gettid()
method.iouring
supports multi-threaded polling mode IORING_SETUP_SQPOLL
. @NathanFreemaniouring_workers
to modify the number of iouring
threads. @NathanFreemaniouring_flags
to support modifying the iouring
working mode. @NathanFreemanSwoole\Thread\Barrier
for multi-thread synchronization barrier. @matyhtfnon-blocking, reentrant coroutine mutex lock
, which can be used between processes/threads without blocking them. @NathanFreemanSwoole\Coroutine\Socket::getOption()
supports the TCP_INFO
option. @matyhtfSwoole\Client
synchronous blocking client supports http
proxy. @matyhtfTCP/UDP/Unix socket
client Swoole\Async\Client
. @matyhtfSwoole\Redis\Server::format()
method to support zero-copy memory, support redis
nested structure. @matyhtfZstd
. You only need to add --enable-zstd
when compiling Swoole
, and then zstd
can be used to compress or decode responses between the http
client and server. @NathanFreemanpecl
was not possible. @remicolletkeepalive
was not possible for Swoole\Coroutine\FastCGI\Client
. @NathanFreemanmax_input_vars
would throw an error, causing the process to restart repeatedly. @NathanFreemanSwoole\Event::wait()
within a coroutine. @matyhtfproc_open
does not support pty in coroutine mode. @matyhtfpdo_sqlite
on PHP 8.3. @NathanFreemanSwoole
. @Appla @NathanFreewardSTDOUT/STDERR
are already closed. @Appla @matyhtfset_tcp_nodelay
configuration. @matyhtfdispatch_func
would cause PHP's internals to throw errors. @NathanFreeman_tsrm_ls_cache
. @jingjingxykGCC 14
. @remicolletSwoole\Http2\Request
. @guandengpgsql
coroutine client. @NathanFreeman$request->server['request_method']
and $request->getMethod()
when HTTP2
is enabled. @matyhtfcontent-type
when uploading files. @matyhtfhttp2
coroutine client. @matyhtfworker_id
property in Swoole\Server
. @cjavadbrotli
in config.m4
. @fundawangSwoole\Http\Response::create
under multi-threading. @matyhtfmacos
environment. @matyhtfSwoole\Http\Response
in multi-threaded mode was not generated separately for each thread. @matyhtf @NathanFreemanFatal error
issue caused by PHP-8.4
's timeout
feature in ZTS mode. @matyhtfexit()
hook
function for PHP-8.4
. @remicolletSwoole\Thread::getNativeId()
did not work in cygwin
. @matyhtfSIGSEGV
in Swoole\Coroutine::getaddrinfo()
method. @matyhtfSwoole\Table
could not be used before the process exited. @matyhtfSwoole\Server::stop()
when using named parameters. @matyhtfSwoole\Thread\Map::toArray()
not copying the key. @matyhtfSwoole\Thread\Map
. @matyhtfsocket structs
. @petkSwoole\Http\Response
. @abnegatefile
operation code across different PHP versions. @NathanFreemanpdo
operation code across different PHP versions. @NathanFreemanSocket::ssl_recv()
. @matyhtfpkg-config
. @NathanFreemanrequest header parsing
. @NathanFreemanfd
lifecycle issues in multi-threading mode. @matyhtfsendfile
. @matyhtfPHP_DEF_HAVE
with AC_DEFINE_UNQUOTED
in config.m4
. @petkheartbeat
, shutdown
, and stop
for the server in multi-threaded mode. @matyhtflibrt
when glibc
version is greater than 2.17. @matyhtfSwoole\Http\Response::write()
. @matyhtfSwoole\Http\Response::write()
can now send HTTP/2 protocol. @matyhtfPHP 8.4
. @matyhtf @NathanFreemanSwoole\Http\Response
. @NathanFreemanSWOOLE_THREAD
supports restarting worker threads. @matyhtfSWOOLE_THREAD
supports starting timers in the Manager
thread. @matyhtfcurl
extension of PHP-8.4
. @matyhtf @NathanFreemanSwoole
code using iouring
. @matyhtf @NathanFreemanSwoole\Coroutine\System::waitSignal()
method to allow listening to multiple signals simultaneously. @matyhtfPHP 8.0
.Swoole\Coroutine\MySQL
coroutine client.Swoole\Coroutine\Redis
coroutine client.Swoole\Coroutine\PostgreSQL
coroutine client.Swoole\Coroutine\System::fread()
, Swoole\Coroutine\System::fwrite()
, and Swoole\Coroutine\System::fgets()
methods.Swoole
支持多线程模式,当php
是zts
模式,编译Swoole
时开启--enable-swoole-thread
时,就能使用多线程模式。Swoole\Thread
。 @matyhtfSwoole\Thread\Lock
。 @matyhtfSwoole\Thread\Atomic
,Swoole\Thread\Atomic\Long
。 @matyhtfSwoole\Thread\Map
,Swoole\Thread\ArrayList
,Swoole\Thread\Queue
。 @matyhtfiouring作为文件异步操作的底层引擎
,安装了liburing
和编译Swoole
时开启--enable-iouring
,file_get_contents
,file_put_contents
,fopen
,fclose
,fread
,fwrite
,mkdir
,unlink
,fsync
,fdatasync
,rename
,fstat
,lstat
,filesize
这些函数的异步操作将会由iouring
实现。 @matyhtf @NathanFreemanBoost Context
版本到1.84。现在,龙芯CPU也能够支持协程了。 @NathanFreemanSwoole\Thread\Map::find()
方法。 @matyhtfSwoole\Thread\ArrayList::find()
方法。 @matyhtfSwoole\Thread\ArrayList::offsetUnset()
方法。 @matyhtfSwoole\Process::getAffinity()
方法。 @matyhtfSwoole\Thread::setName()
方法。 @matyhtfSwoole\Thread::setAffinity()
方法。 @matyhtfSwoole\Thread::getAffinity()
方法。 ...Swoole\Http\Response::end()
returns null
. @NathanFreemanSwoole\Table
could not be used before the process exits. @matyhtfSwoole\Server::stop()
caused by using named parameters. @matyhtfruntime tcp
module did not support dynamically enabling SSL encryption. @matyhtfFatal error
issue caused by the timeout feature of PHP
in ZTS
mode. @matyhtfSwoole\Coroutine::getaddrinfo()
method could lead to SIGSEGV. @matyhtfv5.1.x
version does not support PHP-8.4
. If you want to use Swoole
with PHP-8.4
, please use the 6.0
version.Swoole v5.1.6
. Wishing everyone good health, all the best, and smooth work.Swoole\Http\Response::end()
返回null
的问题。 @NathanFreemanSwoole\Table
的互斥锁无法使用的问题。 @matyhtfSwoole\Server::stop()
执行失败的问题。 @matyhtfruntime tcp
模块不支持动态开启SSL加密的问题。 @matyhtfPHP
在ZTS
模式下的超时特性引起的Fatal error
问题。 @matyhtfv5.1.*
版本不支持PHP-8.4
,如果想在PHP-8.4
中使用Swoole
,请使用v6.0
版本。Swoole v5.1.6
做出的贡献,祝愿大家身体健康,万事如意,工作顺利。non-blocking, reentrant coroutine mutex lock
, which can be used between processes/threads without blocking them. @NathanFreemanSwoole\Coroutine\Socket::getOption()
supports the TCP_INFO
option. @matyhtfSwoole\Client
synchronous blocking client supports http
proxy. @matyhtfTCP/UDP/Unix socket
client Swoole\Async\Client
. @matyhtfSwoole\Redis\Server::format()
method to support zero-copy memory, support redis
nested structure. @matyhtfFatal error
issue caused by PHP-8.4
's timeout
feature in ZTS mode. @matyhtfexit()
hook
function for PHP-8.4
. @remicolletSwoole\Thread::getNativeId()
did not work in cygwin
. @matyhtfSIGSEGV
in Swoole\Coroutine::getaddrinfo()
method. @matyhtfSwoole\Table
could not be used before the process exited. @matyhtfSwoole\Server::stop()
when using named parameters. @matyhtfSwoole\Thread\Map::toArray()
not copying the key. @matyhtfSwoole\Thread\Map
. @matyhtfSWOOLE_THREAD
supports restarting worker threads. @matyhtfSWOOLE_THREAD
supports starting timers in the Manager
thread. @matyhtfcurl
extension of PHP-8.4
. @matyhtf @NathanFreemaniouring
. @matyhtf @NathanFreemanSwoole\Coroutine\System::waitSignal()
method to allow listening to multiple signals simultaneously. @matyhtfSwoole v6.0.0
. Wishing everyone good health, happiness, and success in your work.pre-release
and should not be used in production environments, only in testing environments.Swoole\Coroutine\Socket::getOption()
支持了TCP_INFO
选项。 @matyhtfSwoole\Client
同步阻塞客户端支持http
代理。 @matyhtfTCP/UDP/Unixsocket
客户端Swoole\Async\Client
。 @matyhtfSwoole\Redis\Server::format
()方法,支持内存零拷贝,支持redis
嵌套结构。 @matyhtfPHP-8.4
在ZTS模式下的超时
特性引起的Fatal error
问题。 @matyhtfPHP-8.4
的exit()
函数hook
。 @remicolletSwoole\Thread::getNativeId()
在cygwin
无法工作的问题。 @matyhtfSwoole\Coroutine::getaddrinfo()
方法会导致SIGSEGV
的问题。 @matyhtfruntime tcp
模块不支持动态开启SSL加密的问题。 @matyhtfSwoole\Table
的互斥锁无法使用的问题。 @matyhtfSwoole\Server::stop()
执行失败的问题。 @matyhtfSwoole\Thread\Map::toArray()
函数未复制key
导致崩溃的问题。 @matyhtfSwoole\Thread\Map
无法删除嵌套的数字键的问题。 @matyhtfServer
多线程模式支持重启工作线程。 @matyhtfServer
多线程模式支持在Manager
线程中开启定时器。 @matyhtfPHP-8.4
的curl
扩展。 @matyhtf @NathanFreemaniouring
。 @matyhtf @NathanFreemanSwoole\Coroutine\System::waitSignal()
方法,允许同时监听多个信号。 @matyhtfSwoole v6.0.0
做出的贡献,祝愿大家身体健康,万事如意,工作顺利。zend_ini_parse_quantity
to parse string numbers for PHP versions greater than 8.2. @matyhtfpdo_pgsql
. @NathanFreemanpdo_pgsql
. @NathanFreemanphp8.3 curl
. @NathanFreemanprocess
module. @NathanFreemanSWOOLE_BASE
mode, all connections should be closed during the PHP RSHUTDOWN
phase. @matyhtfzend_ini_parse_quantity
解析字符串数字。 @matyhtfpdo_pgsql
协程化的时候,偶发资源不可用的问题。 @NathanFreemanpdo_pgsql
协程化的时候,头文件引用问题。 @NathanFreemanphp8.3 curl
的一些相关代码。 @NathanFreemanprocess
模块核心测试错误。 @NathanFreemanSWOOLE_BASE
模式下,所有的连接都应该在PHP RSHUTDOWN
阶段都被关闭。 @matyhtfSwoole\Thread\Map::find()
method. @matyhtfSwoole\Thread\ArrayList::find()
method. @matyhtfSwoole\Thread\ArrayList::offsetUnset()
method. @matyhtfSwoole\Process::getAffinity()
method. @matyhtfSwoole\Thread::setName()
method. @matyhtfSwoole\Thread::setAffinity()
method. @matyhtfSwoole\Thread::getAffinity()
method. @matyhtfSwoole\Thread::setPriority()
method. @matyhtfSwoole\Thread::getPriority()
method. @matyhtfSwoole\Thread::gettid()
method.iouring
supports multi-threaded polling mode IORING_SETUP_SQPOLL
. @NathanFreemaniouring_workers
to modify the number of iouring
threads. @NathanFreemaniouring_flags
to support modifying the iouring
working mode. @NathanFreemanSwoole\Thread\Barrier
for multi-thread synchronization barrier. @matyhtf$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:
Swoole\Http2\Request
. @guandengpgsql
coroutine client. @NathanFreeman$request->server['request_method']
and $request->getMethod()
when HTTP2
is enabled. @matyhtfcontent-type
when uploading files. @matyhtfhttp2
coroutine client. @matyhtfworker_id
property in Swoole\Server
. @cjavadbrotli
in config.m4
. @fundawangSwoole\Http\Response::create
under multi-threading. @matyhtfmacos
environment. @matyhtfSwoole\Http\Response
in multi-threaded mode was not generated separately for each thread. @matyhtf @NathanFreemanswoole
. @matyhtfsendfile
. @matyhtfPHP_DEF_HAVE
with AC_DEFINE_UNQUOTED
in config.m4
. @petkheartbeat
, shutdown
, and stop
for the server in multi-threaded mode. @matyhtflibrt
when glibc
version is greater than 2.17. @matyhtfSwoole\Http\Response::write()
. @matyhtfSwoole\Http\Response::write()
can now send HTTP/2 protocol. @matyhtfPHP 8.4
. @matyhtf @NathanFreemanSwoole\Http\Response
. @NathanFreemanSwoole\Coroutine\System::fread()
, Swoole\Coroutine\System::fwrite()
, and Swoole\Coroutine\System::fgets()
methods.Swoole\Thread\Map::find()
方法。 @matyhtfSwoole\Thread\ArrayList::find()
方法。 @matyhtfSwoole\Thread\ArrayList::offsetUnset()
方法。 @matyhtfSwoole\Process::getAffinity()
方法。 @matyhtfSwoole\Thread::setName()
方法。 @matyhtfSwoole\Thread::setAffinity()
方法。 @matyhtfSwoole\Thread::getAffinity()
方法。 @matyhtfSwoole\Thread::setPriority()
方法。 @matyhtfSwoole\Thread::getPriority()
方法。 @matyhtfSwoole\Thread::gettid()
方法。iouring
支持多线程轮询模式IORING_SETUP_SQPOLL
。 @NathanFreemaniouring_workers
修改iouring
线程数。 @NathanFreemaniouring_flags
支持修改iouring
工作模式。 @NathanFreemanSwoole\Thead\Barrier
多线程同步屏障。@matyhtfSwoole\Http2\Request
动态属性问题。 @guandengpgsql
协程客户端偶发资源不可用的问题。 @NathanFreemanHTTP2
时,$request->server['request_method'] 与 $request->getMethod() 的结果不一致。 @matyhtfcontent-type
。 @matyhtfhttp2
协程客户端的代码错误。 @matyhtfSwoole\Server
缺少属性worker_id
的问题。 @cjavadconfig.m4
有关brotli
错误的问题。 @fundawangSwoole\Http\Response::create
无效。 @matyhtfmacos
环境下编译错误。 @matyhtfSwoole\Http\Response
返回响应时间的静态变量没有各个线程各自生成一份的问题。 @matyhtf @NathanFreemanswoole
底层相关代码。 @matyhtfsendfile
的相关逻辑。 @matyhtfconfig.m4
中用AC_DEFINE_UNQUOTED
替换PHP_DEF_HAVE
。 @petkheartbeat
,shutdown
和stop
的相关逻辑。 @matyhtfglibc
版本高于2.17时,不需要链接librt
。 @matyhtfhttp
客户端可以接受重复的请求头。 @matyhtfSwoole\Http\Response::write()
。 @matyhtfSwoole\Http\Response::write()
现在可以发送http2
协议。 @matyhtfPHP8.4
。 @matyhtf @NathanFreemansocket
异步写入的能力。 @matyhtfSwoole\Http\Response
。 @NathanFreemansocket
。 @matyhtfSwoole\Coroutine\System::fread()
, Swoole\Coroutine\System::fwrite()
和Swoole\Coroutine\System::fgets()
方法Swoole\Server
are not reset to 0 during process restart. @NathanFreemanSwoole\Http\Request::getMethod()
returns the incorrect request method when HTTP2
is enabled. @matyhtfSwoole\Http\Response::end()
. Response data larger than 16K will be sent directly through the socket, while data smaller than or equal to 16K will be copied to the buffer first before being sent out via the socket. @NathanFreemanGCC 14
编译Swoole的问题。 @remicolletpdo_pgsql
在协程化时会抛出资源不可用的错误。 @NathanFreemanSwoole\Server
进程重启时,某些关键参数不会重置为0。 @NathanFreemanHTTP2
时,Swoole\Http\Request::getMethod()
返回错误的请求方法的问题。 @matyhtfSwoole\Http\Response::end()
,大于16K的响应数据将通过套接字直接发送,小于等于16K的数据会先拷贝在buffer中,再通过套接字发送出去。 @NathanFreemanYou can’t perform that action at this time.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4