Event-driven asynchronous and concurrent networking engine with high performance for PHP.

Event-driven asynchronous and concurrent networking engine with high performance for PHP.
- event-driven
- coroutine
- asynchronous non-blocking
- multi-thread reactor
- multi-process worker
- multi-protocol
- millisecond timer
- built-in tcp/http/websocket/http2 server
- coroutine tcp/http/websocket client
- coroutine mysql client
- coroutine redis client
- coroutine read/write file system
- coroutine dns lookup
- support IPv4/IPv6/UnixSocket/TCP/UDP
- support SSL/TLS encrypted transmission

License: Apache2.0

Latest releases

Version Release Download
5.1.3 2024-06-06 swoole-5.1.3.tgz
5.1.2 2024-05-10 swoole-5.1.2.tgz
5.1.1 2023-11-26 swoole-5.1.1.tgz
5.1.0 2023-09-29 swoole-5.1.0.tgz
5.0.3 2023-05-11 swoole-5.0.3.tgz
Show all releases


Version Message
5.1.3 - Fix the problem of being unable to install through pecl.
- Fix the issue of Swoole\Coroutine\FastCGI\Client client being unable to set keepalive.
- Fix the issue of process continuously restarting due to error thrown when request parameters exceed max_input_vars.
- Fix the unknown issue caused by using Swoole\Event::wait() in a coroutine.
- Fix the issue of proc_open not supporting pty when used in a coroutine.
- Fix the segmentation fault issue in pdo_sqlite on PHP 8.3.
- Fix the unnecessary warning when compiling Swoole.
- Fix the error thrown when calling zend_fetch_resource2_ex on closed STDOUT/STDERR.
- Fix the invalid set_tcp_nodelay configuration.
- Fix the occasional unreachable branch issue triggered during file uploads.
- Fix the issue causing PHP core to throw errors when dispatch_func is set.
- Fix the obsolete warning of AC_PROG_CC_C99 in autoconf >= 2.70 version.
- Remove unnecessary checks for socket structs.
- Upgrade the Swoole library.
- Add support for http status code 451 in Swoole\Http\Response.
- Synchronize file operation code across different versions of PHP.
- Synchronize PDO operation code across different versions of PHP.
- Optimize the code for Socket::ssl_recv() function.
- Optimized config.m4 by allowing some configurations to set dependency library locations using pkg-config.
- Optimize the issue with using dynamic arrays when parsing request headers.
5.1.2 - Added support for embed sapi @matyhtf
- Fixed compatibility with PHP 8.3 ZEND_CHECK_STACK_LIMIT @Yurunsoft
- Fixed no Content-Range response header when the range request returns all the contents of the file @Yurunsoft
- Optimized HTTP server performance @NathanFreeman
- Fixed truncated cookie @stnguyen90
- Fixed native-curl crash on PHP 8.3 @NathanFreeman
- Added CLOSE_SERVICE_RESTART, CLOSE_TRY_AGAIN_LATER, CLOSE_BAD_GATEWAY as valid close reasons for websocket @cjavad
- Fixed invalid errno after Server::Manager::wait() @JacobBrownAustin
- Fixed HTTP2 Typo @leocavalcante
5.1.1 - Fixed memory leak issue in HTTP coroutine client
- Fixed the issue of can not hook pdo_odbc
- Fixed the error in executing socket_import_stream()
- Fixed the issue with Context::parse_multipart_data() unable to handle empty request body
- Fixed the issue with PostgreSQL coroutine client where the parameters are not working
- Fixed the bug where curl crashes during destruction
- Fixed the compatibility issue between Swoole 5.x and the latest version of xdebug
- Fixed the problem of class not found error caused by coroutine switching during the process of class autoloading
- Fixed the issue of not being able to compile Swoole on OpenBSD
5.1.0 - Support pdo_pgsql coroutine hook
- Support pdo_odbc coroutine hook
- Support pdo_oci coroutine hook
- Support pdo_sqlite coroutine hook
- Add configuration for PDO connection pools for pdo_pgsql, pdo_odbc, pdo_oci, pdo_sqlite
- Improved performance of Http\Server, can increase up to 60% in extreme cases
- Fixed the memory leak caused by each request of the WebSocket coroutine client
- Fixed the issue where graceful shutdown of the HTTP coroutine server was not causing the client to exit
- Fixed the issue where adding the --enable-thread-context option during compilation was causing Process::signal() to not work
- Fixed the issue where the connection count was being calculated incorrectly when a process exited abnormally in SWOOLE_BASE mode
- Fixed the incorrect signature of the stream_select() function
- Fixed the case sensitivity issue with the MIME information in files
- Fixed the spelling mistake in Http2\Request::$usePipelineRead, which was causing a warning to be thrown in PHP 8.2 environment
- Fixed the memory leak issue in SWOOLE_BASE mode
- Fixed the memory leak issue caused by setting the expiration time of a cookie in Http\Response::cookie()
- Fixed the connection leak issue in SWOOLE_BASE mode
- Fixed the function signature issue of php_url_encode in Swoole under PHP 8.3
- Fixed the issue with unit testing options
- Optimized and refactored the code
- Fix compatibility with PHP 8.3
5.0.3 - Added --with-nghttp2_dir option, Use the system nghttp2 library
- Added unit character supports for byte length or size related options
- Fixed memory leak Server task/pipemessage/finish event callback
- Added Process\Pool::sendMessage()
- Added support for max-age to Http\Response:cookie() method
- No longer thrown error log when http header conflicts
- No longer thrown error log when the server connection is closed
- Fixed memory leak caused by Server send_yield
Show complete changelog