Package Information |
Summary |
Event-driven asynchronous and concurrent networking engine with high performance for PHP. |
Maintainers |
Han Tianfeng <
rango at swoole dot com >
(lead)
[details]
Bruce Dou <
doubaokun at php dot net >
(developer)
[details]
Lufei <
lufei at php dot net >
(developer)
[details]
|
License |
Apache2.0 |
Description |
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 read/write file system
- coroutine dns lookup
- support IPv4/IPv6/UnixSocket/TCP/UDP
- support SSL/TLS encrypted transmission |
Homepage |
https://github.com/swoole/swoole-src
|
Release notes
Version 4.5.0
(stable)
|
New APIs --- + DTLS supports, we can build WebRTC applications now (#3188) (@matyhtf) + Built-in `FastCGI` client, we can proxy HTTP request to FPM with one line of code now (swoole/library#17) (@twose) + `Co::wait`, `Co::waitPid`, `Co::waitSignal` (#3158) (@twose) + `Co::waitEvent` (#3197) (@twose) + `Co::set(['exit_condition' => $callable])` to exit condition of reactor (#2918) (#3012) (@twose) + `Co::getElapsed` to get the coroutine elapsed time (#3162) (@doubaokun) + `Socket::checkLiveness`, `Socket::peek` (#3057) (@twose) + `Socket->setProtocol(['open_fastcgi_protocol' => $bool])` (#3103) (@twose) + `Server::get(Master|Manager|Worker)Pid`, `Server::getWorkerId` (#2793) (#3019) (@matyhtf) + `Server::getWorkerStatus` (SWOOLE_WORKER_BUSY, SWOOLE_WORKER_IDLE) (#3225) (@matyhtf) + `Server->on('beforeReload', $callable)` and `Server->on('afterReload', $callable)` (Server reload event on manager process) (#3130) (@huanghantao) + `Http\Server` support `http_index_files` and `http_autoindex` with static handler (#3171) (@huanghantao) + `Http2\Client->read(float $timeout = -1)`, support Coroutine\HTTP2\Client read more than once (#3011) (#3117) (@twose) + `Http\Request->getContent` (alias of rawContent) (#3128) (@huanghantao) + `swoole_mime_type_(add|set|delete|get|exists)` (mime APIs) (#3134) (@twose)
Enhancement --- + Optimize memory-copy between master and worker (4x faster) (#3075) (#3087) (@huanghantao) + Optimize websocket dispatch (1x faster) (#3076) (@matyhtf) + Optimize memory-copy in websocket_construct_frame (1x faster) (#3097) (@matyhtf) + Optimize SSL validation (#3226) (@matyhtf) + Separate SSL accept and SSL handshake (#3214) (@twose) + Support MIPS (#3196) (@ekongyun) + Resolve the domain name when use udp coroutine client (#3236) (#3239) (@huanghantao) + Support some common options for Coroutine\Http\Server (#3257) (@twose) + Support set cookies when websocket handshake (#3270) (#3272) (@twose) + Support CURLOPT_FAILONERROR (swoole/library#20) (@sy-records) + Support CURLOPT_FAILONERROR (swoole/library#20) (@sy-records) + Support CURLOPT_SSLCERTTYPE, CURLOPT_SSLCERT, CURLOPT_SSLKEYTYPE, CURLOPT_SSLKEY (swoole/library#22) (@sy-records) + Support CURLOPT_HTTPGET (swoole/library@d730bd08) (@shiguangqi)
Remove --- - Remove `Runtime::enableStrictMode` method (b45838e3) (@twose) - Remove `Buffer` class (559a49a8) (@twose)
Kernel --- * New C++ API: `coroutine::async` with lambda (#3127) (@matyhtf) * Refactor event API and reactor fd to swSocket (#3030) (@matyhtf) * Convert all source files to C++ (#3030) (71f987f3) (@matyhtf) * Code optimizations (#3063) (#3067) (#3115) (#3135) (#3138) (#3139) (#3151) (#3168) (@huanghantao) * Code optimization for header files (#3051) (@matyhtf) * Refactor `enable_reuse_port` option (#3192) (@matyhtf) * Reactor Socket API (#3193) (@matyhtf) * Reduce one system call (3b5aa85d) (@matyhtf) * Remove swServerGS::now (#3152) (@huanghantao) * Improve protocol setter (#3108) (@twose) * Use the Better way to init C object on stack (#3069) (@twose) * Use type `uchar` for bit field (#3071) (@twose) * Support parallel test (#3215) (@twose)
Fixed --- * Fixed `enable_delay_receive` (#3221) (#3224) (@matyhtf) * All other bug fix patches have already been merged into the v4.4.x branch, we will not reiterate them here |