swoole

Coroutine-based concurrency library for PHP


Coroutine-based concurrency library for PHP
- event-driven
- coroutines
- asynchronous non-blocking
- 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
- automatically replace blocking functions to non-blocking
- support IPv4/IPv6/UnixSocket/TCP/UDP
- support SSL/TLS encrypted transmission

License: Apache2.0

Latest releases

Version Release Download
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
5.0.0 2022-08-01 swoole-5.0.0.tgz
4.8.13 2023-03-02 swoole-4.8.13.tgz
Show all releases

Changelog

Version Message
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
5.0.0 Added
---
* Added max_concurrency option for Server
* Added max_retries option for Coroutine\Http\Client
* Added name_resolver global option
* Added upload_max_filesize option for Server
* Added Coroutine::getExecuteTime()
* Added SWOOLE_DISPATCH_CONCURRENT_LB dispatch_mode for Server

Changed
---
* Enhanced type system, added types for parameters and return values of all functions
* Optimized error handling, all constructors will throw exceptions when fail
* Adjusted the default mode of Server, the default is SWOOLE_BASE mode
* Migrate pgsql coroutine client to core
* Contains all bugfixes from the 4.8.x branch

Removed
---
- Removed PSR-0 style class names
- Removed the automatic addition of Event::wait() in shutdown function
- Removed Server::tick/after/clearTimer/defer aliases
- Removed --enable-http/--enable-swoole-json, adjusted to be enable by default

Deprecated
---
- Deprecated Coroutine\Redis and Coroutine\MySQL
4.8.13 - Fixed parameter compatibility of Coroutine::printBackTrace() and debug_print_backtrace()
- Fixed parsing length is wrong when the websocket server enable http2 and websocket protocols at the same time
- Refactor curl native to support a curl handle with multiple sockets, such as the curl ftp protocol
- Support for configuring http2 default settings
- 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 memory leak when send_yield occurs in Server::send(), Http\Response::end(), Http\Response::write(), WebSocket/Server::push()
- Fixed crash when using table::getMemorySize() before add columns
- Support HTTP Range Requests
Show complete changelog