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
6.0.0 2024-06-24 swoole-6.0.0.tgz
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
Show all releases

Changelog

Version Message
6.0.0 - Swoole supports multi-threading mode. When PHP is in ZTS mode and Swoole is compiled with --enable-swoole-thread, the multi-threading mode can be utilized.
- Added a new thread management class Swoole\Thread.
- Introduced thread lock Swoole\Thread\Lock.
- Added thread atomic counter Swoole\Thread\Atomic, Swoole\Thread\Atomic\Long.
- Added safe concurrent containers Swoole\Thread\Map, Swoole\Thread\ArrayList, Swoole\Thread\Queue.
- File asynchronous operations support iouring as the underlying engine. Installing liburing and compiling Swoole with --enable-iouring enables asynchronous operations for functions like file_get_contents, file_put_contents, fopen, fclose, fread, fwrite, mkdir, unlink, fsync, fdatasync, rename, fstat, lstat, filesize through iouring.
- Upgraded Boost Context to version 1.84. Now, Loongson CPUs can also supports coroutines.
- Fixed the issue where installation via pecl was not possible.
- Fixed the bug where setting keepalive was not possible for Swoole\Coroutine\FastCGI\Client.
- Fixed the issue where exceeding the max_input_vars would throw an error, causing the process to restart repeatedly.
- Fixed unknown issues caused by using Swoole\Event::wait() within a coroutine.
- Fixed the problem where proc_open does not support pty in coroutine mode.
- Fixed segmentation fault issues with pdo_sqlite on PHP 8.3.
- Fixed unnecessary warnings during the compilation of Swoole.
- Fixed the error thrown by zend_fetch_resource2_ex when STDOUT/STDERR are already closed.
- Fixed ineffective set_tcp_nodelay configuration.
- Fixed the occasional unreachable branch issue during file upload.
- Fixed the problem where setting dispatch_func would cause PHP's internals to throw errors.
- Fixed the deprecation of AC_PROG_CC_C99 in autoconf >= 2.70.
- Capture exceptions when thread creation fails.
- Fixed the undefined problem with _tsrm_ls_cache.
- Fixed the fatal compile error with GCC 14.
- Removed unnecessary checks for socket structs.
- Upgraded Swoole Library.
- Added support for status code 451 in Swoole\Http\Response.
- Synchronized file operation code across different PHP versions.
- Synchronized pdo operation code across different PHP versions.
- Optimized the code for Socket::ssl_recv().
- Improved config.m4; some configurations can now set library locations via pkg-config.
- Optimized the use of dynamic arrays during request header parsing.
- Optimized file descriptor fd lifecycle issues in multi-threading mode.
- Optimized some fundamental coroutine logic.
- No longer supports PHP 8.0.
- No longer supports Swoole\Coroutine\MySQL coroutine client.
- No longer supports Swoole\Coroutine\Redis coroutine client.
- No longer supports Swoole\Coroutine\PostgreSQL coroutine client.
- Swoole-v6.0.0-alpha is a test version and cannot be used in any production environment; it is for testing purposes only.
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
Show complete changelog