swoole

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.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
5.0.2 2023-03-02 swoole-5.0.2.tgz
5.0.1 2022-11-07 swoole-5.0.1.tgz
Show all releases

Changelog

Version Message
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
5.0.2 - Support for configuring http2 default settings
- Support xdebug under 8.1 or higher
- Refactor curl native to support a curl handle with multiple sockets, such as the curl ftp protocol
- Added $who parameter to Process::setPriority/getPriority
- Added Coroutine\Socket::getBoundCid()
- Adjusted the default value of Coroutine\Socket::recvLine/recvWithBuffer $length parameter to 65536
- Refactor cross-coroutine shutdown feature to make memory release safer and solve the crash problem when a fatal error occurs
- Added socket property for Coroutine\Client, Coroutine\Http\Client, Coroutine\Http2\Client, allow direct operation of socket resources
- Support Http\Server to send empty file to http2 client
- Support graceful restart for Coroutine\Http\Server. When server shuting down, the client connection will no longer be forcibly closed, and only stop listening to new requests
- Added pcntl_rfork pcntl_sigwaitinfo to list of unsafe function, will be closed when coroutine container starts
- Refactor Server process manager with base mode, the behavior of shutdown and reload will be consistent with base or process mode
5.0.1 * Supported PHP-8.2
* Improved coroutine exception handling, compatible with ext-soap
* Fixed parameter compatibility of Coroutine::printBackTrace() and debug_print_backtrace()
* Added pgsql coroutine client LOB supports
* Fixed Event::add() support for sockets resources
* Fixed compile error when no zlib
* Improved websocket client, upgrade header contains websocket instead of equal
* Optimized http client, disable keep-alive when server sends connection close
* Optimized http client, prohibit adding the Accept-Encoding header without compression library
- Improved debug info, set password as sensitive parameter under PHP-8.2
- Fixed crash when unpack server task parsed to an unexpected string
- Enhanced Server::taskWaitMulti(), no blocking in coroutine environment
- Fixed the problem that adding a timer less than 1ms is forced to 0
- Fixed crash when using table::getMemorySize() before add columns
- Optimized log function, no longer print screen when writing to the log file fails
Show complete changelog