Looking for more information on how to do PHP the right way? Check out PHP: The Right Way

Community News:
Latest PECL Releases (03.12.2019)
Mar 12, 2019 @ 08:05:01

Latest PECL Releases:

  • zookeeper 0.6.4

    • Fix segmentation fault after destroying Zookeeper instance (Issue #32)
  • datadog_trace 0.15.1
    ### Added - Symfony 2.3 web tests for resource name #349 - Update images and enable leak detection, split tests in CI to Unit, Integration and Web #299


    • Resource name on Symfony 2.x requests served through controllers #341
    • Sanitize url in web spans #344
    • Laravel 5.8 compatibility #351
  • zookeeper 0.7.1
    Bugs: - Fix segmentation fault after destroying Zookeeper instance (Issue #32)
  • xdebug 2.7.0
    Wed, Mar 6, 2019 - xdebug 2.7.0

    = Fixed bugs:

    • Fixed issue #1520: Xdebug does not handle variables and properties with "-" in their name
    • Fixed issue #1577: Code coverage path analysis with chained catch fails in PHP 7.3
    • Fixed issue #1639: Compile warning/error on GCC 8 or Clang due to "break intentionally missing"
    • Fixed issue #1642: Debugger gives: "Warning: Header may not contain NUL bytes"
  • redis 4.3.0RC2
    phpredis 4.3.0RC2

    This is probably the latest release with PHP 5 suport!!!

    • Proper persistent connections pooling implementation [a3703820, c76e00fb, 0433dc03, c75b3b93] (Pavlo Yatsukhnenko)
    • RedisArray auth [b5549cff, 339cfa2b, 6b411aa8] (Pavlo Yatsukhnenko)
    • Use zend_string for storing key hashing algorithm [8cd165df, 64e6a57f] (Pavlo Yatsukhnenko)
    • Add ZPOPMAX and ZPOPMIN support [46f03561, f89e941a, 2ec7d91a] (@mbezhanov, Michael Grunder)
    • Implement GEORADIUS_RO and GEORADIUSBYMEMBER_RO [22d81a94] (Michael Grunder)
    • Add callback parameter to subscribe/psubscribe arginfo [0653ff31] (Pavlo Yatsukhnenko)
    • Don't check the number affected keys in PS_UPDATE_TIMESTAMP_FUNC [b00060ce] (Pavlo Yatsukhnenko)
    • Xgroup updates [15995c06] (Michael Grunder)
    • RedisCluster auth [c5994f2a] (Pavlo Yatsukhnenko)
    • Cancel pipeline mode without executing commands [789256d7] (Pavlo Yatsukhnenko)
    • Use zend_string for pipeline_cmd [e98f5116] (Pavlo Yatsukhnenko)
    • Different key hashing algorithms from hash extension [850027ff] (Pavlo Yatsukhnenko)
    • Breaking the lock acquire loop in case of network problems [61889cd7] (@SkydiveMarius)
    • Implement consistent hashing algorithm for RedisArray [bb32e6f3, 71922bf1] (Pavlo Yatsukhnenko)
    • Use zend_string for storing RedisArray hosts [602740d3, 3e7e1c83] (Pavlo Yatsukhnenko)
    • Update lzf_compress to be compatible with PECL lzf extension [b27fd430] (@jrchamp)
    • Fix RedisCluster keys memory leak [3b56b7db] (Michael Grunder)
    • Directly use return_value in RedisCluster::keys method [ad10a49e] (Pavlo Yatsukhnenko)
    • Fix segfault in Redis Cluster with inconsistent configuration [72749916, 6e455e2e] (Pavlo Yatsukhnenko)
    • Masters info leakfix [91bd7426] (Michael Grunder)
    • Refactor redis_sock_read_bulk_reply [bc4dbc4b] (Pavlo Yatsukhnenko)
    • Remove unused parameter lazy_connect from redis_sock_create [c0793e8b] (Pavlo Yatsukhnenko)
    • Remove useless ZEND_ACC_[C|D]TOR. [bc9b5597] (@twosee)
    • Documentation improvements (@fanjiapeng, @alexander-schranz, @hmc, Pavlo Yatsukhnenko, Michael Grunder)
  • swoole 4.3.0
    New Features --- + `Co::getContext` to get the coroutine context object ([RFC-1018](https://github.com/swoole/rfc-chinese/issues/45)) (@twose) + `Co::getPcid` to get the parent coroutine ID ([RFC-1017](https://github.com/swoole/rfc-chinese/issues/41)) (@twose) + `Co::exists` to know if a coroutine exists (@twose) + Runtime Coroutine Hook supports `stream_select` (#2358) (@matyhtf) + `max_wait_time` configuration support in BASE mode (#2282) (@shiguangqi) + Support for one-way delivery tasks in the `Master/Manager/User` process ([RFC-1015](https://github.com/swoole/rfc-chinese/issues/38)) (@matyhtf) + `CoSocket` has two new APIs `recvAll` and `sendAll` to ensure complete receive/send data until completion or error (3700cbb) (@twose) + `Process` supports the coroutine mode, please refer to ([Use Coroutine in Process](https://wiki.swoole.com/wiki/page/p-process_coro.html)) + `Process->exportSocket` to export `CoSocket` object (91d3621) (@matyhtf) + Added `Server->getCallback` method to get the callback function of the specified name of the Server (@matyhtf)


    • The default max number of connections is 100K (instead of 10K) now. If the system configuration is less than this number, use the system configuration first (3d2e387) (@twose)
    • Optimize the code for the Timer module, which now runs faster and accepts any number of arguments (#2347) (@twose)
    • Co::stats will show more information such as the number of events, the number of registered signals, the number of AIO tasks, etc. (@matyhtf)
    • Co::getBackTrace with no params is equivalent to debug_backtrace (@twose)
    • Co::listCoroutines is renamed to Co::list, but the original name is still reserved as an alias (Backward compatibility) (@twose)
    • Table::exist, Server::exist are renamed to exists, but the original name is still reserved as aliases (Backward compatibility) (@twose)
    • Redis will automatically authenticate and select the corresponding database when it is automatically reconnected. Add API: getOptions, getAuth, getDBNum (#2303) (fdac8a3) (@windrunner414 & @twose)
    • The default Socket buffer size on FreeBSD should be 2M (750a29c) (@twose)
    • Server->stats will show worker_dispatch_count which can get the number of requests submitted by the master to the current process. The number of requests in the queue can be got by worker_dispatch_count - worker_request_count (a353808) (@matyhtf)
    • Remove Nghttp2 dependencies, no longer need to install it, configuring compilation parameters to open
    • Coroutines now have no max nesting level limitation (there are no real nesting relations between coroutines) (5458cbc) (@twose)
    • When the coroutine reaches the max limitation, the HTTP server will return a 503 error indicating that the service is temporarily unavailable (ebd377f) (@twose)
    • defer will now accept a parameter whose value is the return value at the end of the coroutine (example) (@twose)


    • Fixed error when the task method passed a null argument (#2366) (@twose)
    • Fixed Http client send big data incomplete (#2360) (@twose)
    • Fixed the bug that unprocessed data in the buffer was lost when the TCP client used the eof protocol (a59ae39) (@twose)
    • Fixed async security of Server Reload (022f859) (@matyhtf)
    • Fixed the index value of the connection iterator (b066146) (@twose)
    • Fixed the bug that Set-Cookie special characters are too long to be outputed (#2368) (@mabu233 & @twose)
    • Fixed the bug that Http client did not decode the cookie (duplicated encode when sent) (069ca5d) (@twose)
    • Fixed Http client download with timeout lead to coredump (#2377) (@matyhtf & @twose)
    • Fixed __call and call_user_func* lead to coredump when calling MySQL client method (#2387) (@matyhtf)
    • Fixed coredump when Http2 client header name passed in a number (#2375) (@mabu233)
    • Fixed SwooleEvent::dispatch behavior not as expected (#2390) (@matyhtf)
    • Fixed Socks5 proxy handshake failed (94ef96c) (@twose)
    • Fixed a memory read error caused by a connection failure in a low-version Linux kernel (5adf625) (@matyhtf & @twose)
    • Fixed the bug that the server used the timer in the BASE single-process mode not work (82eca13) (@twose)
    • Fixed compilation failure due to unstable ZendAPI in low-version (768b8a7) (@shiguangqi)
    • Fixed EINVAL when calling sendto (#2395) (@junwei)


    • Create server or customs process after using async file IO are not allowed
    • Create server or customs process in coroutine are not allowed


    • WebsocketServer->exists only shows if the connection exists. Please use the isEstablished method to get if it is a Websocket client.
    • Remove the swoole.fast_serialize configuration item
    • Removed the PHP Warning when the CoClient method return failed
    • Remove the Server->gzip method
    • Remove PicoHttpParser support

    Remove async modules

    Remove all async modules, separate asynchronous extensions to async-ext:

    • Async functions
    • MySQL
    • Redis
    • HttpClient
    • MemoryPool
    • MsgQueue
    • RingQueue