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
4.7.1 2021-08-26 swoole-4.7.1.tgz
4.7.0 2021-07-16 swoole-4.7.0.tgz
4.6.7 2021-05-15 swoole-4.6.7.tgz
4.6.6 2021-04-22 swoole-4.6.6.tgz
4.6.5 2021-04-09 swoole-4.6.5.tgz
Show all releases

Changelog

Version Message
4.7.1 New feature
---
* Introduce a new concurrency mode (#4330) (@doubaokun)

Enhancement
---
* Supported query /etc/hosts for System::dnsLookup (#4341) (#4349) (@zmyWL) (@NathanFreeman)
* Supported boost context support for mips64 (#4358) (@dixyes)
* Supported CURLOPT_RESOLVE option for SWOOLE_HOOK_CURL (swoole/library#107) (@sy-records)
* Supported CURLOPT_NOPROGRESS for SWOOLE_HOOK_CURL (swoole/library#117) (@sy-records)
* Supported boost context support for riscv64 (#4375) (@dixyes)

Fixed
---
* Fixed memory error on shutdown (PHP-8.1) (#4325) (@twose)
* Fixed not serializable classes for 8.1.0beta1 (#4335) (@remicollet)
* Fixed multiple coroutines recursively creating directories (#4337) (@NathanFreeman)
* Fixed native curl bugs (#4360) (@matyhtf)
* Fixed PDOStatement::bindParam() expects parameter 1 to be string (swoole/library#116) (@sy-records)
4.7.0 New APIs
---
* Added Process\Pool::detach() (#4221) (@matyhtf)
* Added onDisconnect callback for Swoole\Server (#4230) (@matyhtf)
* Added Coroutine::cancel() (#4247) (#4249) (@matyhtf)
* Added http_compression/body_decompression options for Http Client (#4299) (@matyhtf)

Enhancement
---
* Supported mysql client prepare field type identification (#4238) (@Yurunsoft)
* Supported c-ares, Refactor DNS (#4275) (@matyhtf)
* Supported setting different idle time for each port (#4290) (@matyhtf)
* Supported SW_DISPATCH_CO_CONN_LB and SW_DISPATCH_CO_REQ_LB for Swoole\Server dispatch_mode (#4318) (@matyhtf)
* Supported timeout for Swoole\ConnectionPool::get (swoole/library#108) (@leocavalcante)
* Supported CURLOPT_PRIVATE for Hook Curl (swoole/library#112) (@sy-records)
* Optimized PDOStatementProxy::setFetchMode function prototype (swoole/library#109) (@yespire)

Fixed
---
* Fixed uncaught thread creation exception when creating a large number of coroutines (swoole/swoole-src@8ce5041) (@matyhtf)
* Fixed the "make install" missing php_swoole.h header file (#4239) (@sy-records)
* Fixed EVENT_HANDSHAKE BC (#4248) (@sy-records)
* Fixed SW_LOCK_CHECK_RETURN (#4302) (@zmyWL)
* Fixed problems with Swoole\Atomic\Long M1 chip (swoole/swoole-src@e6fae2e) (@matyhtf)
* Fixed missing return value of Coroutine\go (swoole/library@1ed49db) (@matyhtf)
* Fixed StringObject consistency between other methods and its immutability (swoole/library#111) (@leocavalcante)
* Fixed StringObject substr error (swoole/library#113) (@sy-records)

Kernel
---
* Did not hook disabled functions (#4283) (@twose)

Test
---
* Added Cygwin build (#4222) (@sy-records)
* Added alpine 3.13 and 3.14 into building test (#4309) (@limingxinleo)
4.6.7 Enhancement
---
* Supported call Process::signal() in Manager process and Task synchronous process (#4190) (@matyhtf)

Fixed
---
* Fixed signal cannot be registered repeatedly (#4170) (@matyhtf)
* Fixed build on OpenBSD/NetBSD (#4188) (#4194) (@devnexen)
* Fixed special case OnClose event missing while listening for writable events (#4204) (@matyhtf)
* Fixed native curl with Symfony HttpClient (#4208) (@matyhtf)
* Fixed Http\Response::end() always return true (swoole/swoole-src@66fcc35) (@matyhtf)
* Fixed PDOException generated by PDOStatementProxy (swoole/library#104) (@twose)

Kernel
---
* Refactored worker buffer, add msg id for the event data (#4163) (@matyhtf)
* Changed the log level of "Request Entity Too Large" to warning (#4175) (@sy-records)
* Deleted inet_ntoa and inet_aton calls (#4199) (@remicollet)
* Adjusted output_buffer_size value to UINT_MAX (swoole/swoole-src@46ab345) (@matyhtf)
4.6.6 Enhancement
---
* Sent SIGTERM to the manager process on FreeBSD when master process is dead (#4150) (@devnexen)
* Supported static compilation with PHP (#4153) (@matyhtf)
* Supported SNI for File Wrapper over HTTP proxy (#4158) (@matyhtf)

Fixed
---
* Fixed sync-client async connect bugs (#4152) (@matyhtf)
* Fixed native curl multi mem leak (swoole/swoole-src@91bf243) (@matyhtf)
4.6.5 New APIs
---
* Add count method to WaitGroup (swoole/library#100) (@sy-records) (@deminy)

Enhancement
---
* Supported native curl multi (#4093) (#4099) (#4101) (#4105) (#4113) (#4121) (swoole/swoole-src@cd7f51c) (#4147) (@matyhtf) (@sy-records) (@huanghantao)
* Allow array HTTP/2 headers, Bug fixed for #4133 (#4140)

Fixed
---
* Fixed NetBSD build (#4080) (@devnexen)
* Fixed OpenBSD build. (#4108) (@devnexen)
* Fixed illumos/solaris build, member aliases only (#4109) (@devnexen)
* Fixed heartbeat detection of SSL connection does not take effect when handshake is not completed (#4114) (@matyhtf)
* Fixed httpclient proxy with host and port (#4124) (@Yurunsoft)
* Fixed Swoole\Coroutine\Http::request, correct array to the client setting (swoole/library#103) (@leocavalcante) (@deminy)

Kernel
---
* Supported asm context on BSD (#4082) (@devnexen)
* Used arc4random_buf to implement getrandom under FreeBSD (#4096) (@devnexen)
* Make context darwin arm64: removes workaround and uses the label (#4127) (@devnexen)

Test
---
* Added build job for alpine (#4104) (@limingxinleo)
Show complete changelog