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

Community News:
Latest PECL Releases (07.09.2019)
Jul 09, 2019 @ 08:05:02

Latest PECL Releases:

  • rdkafka 3.1.2
    * Fix build

  • ahocorasick 0.0.7
    Issue #21 fixed. Problem with buffering all previous searches in the trie.
  • swoole 4.4.0
    Backward incompatible changes ---
    • Consistent with PHP official, no longer supports PHP7.0 (@matyhtf)
    • Remove the Serialize module, which is maintained in a separate ext-serialize extension. Reason: Due to frequent changes to the PHP kernel, stability cannot be guaranteed
    • Remove the PostgreSQL module and maintain it in a separate ext-postgresql extension. Reason: PostgreSQL uses asynchronous ways in the kernel and lacks the necessary unit tests to guarantee quality
    • Runtime::enableCoroutine is no longer automatically compatible with the internal and external environment of the Coroutine. Once enabled, all blocking operations must be called in the Coroutine (@matyhtf)
    • Due to the introduction of the new CoroutineMySQL client driver, the underlying design is more standardized, but there are some small downward incompatible changes
      • CoroutineMySQL->fetch/nextResult is optimized for on-demand reads, which will trigger IO scheduling
      • When the defer attribute is on, the request of statement needs to use statement->recv to receive the response
      • When the defer/fetch_mode feature is enabled, if there is unreceived data, a new request will be banned
      • Unlike asynchronous, the connected attribute is no longer updated based on events in real-time (It's not reliable) but is updated after the IO operation fails
    • CoroutineHttpClient->set_cookie_headers no longer have key names (#2664) (@twose)

    Deprecated content

    • The Buffer module will be discarded. Reason: It is highly replaceable and has low usage. It can be replaced by PHP string or fopen("memory")
    • The Lock module will be discarded. Reason for discarding: There may be problems with locking in the Coroutine. You can use Chan to implement the Lock of the Coroutine version
    • Since async stream_socket_pair is introduced, it is recommended to enable the hook by flag SWOOLE_HOOK_STREAM_FUNCTION instead of SWOOLE_HOOK_STREAM_SELECT

    New features

    • Added Library, using pure PHP to write kernel functions instead of C/C++, providing the following features
      • Added high quality PHP module CoroutineWaitGroup (@twose)
      • Use the PHP code to implement the CURL hook, one-click to make the CURL non-blocking, currently the experimental feature, you need to call Runtime::enableCoroutine(SWOOLE_HOOK_CURL) to open (@matyhtf) (@Yurunsoft)
      • Use PHP code to implement exec/shell_exec of Coroutine version (#2657) (@Yurunsof)
      • When RuntimeHook is turned on, the function array_walk, array_walk_recursive will be replaced by the version of Swoole, which will solve the problem that the native function cannot be reentrant, but it will not be able to traverse object (@matyhtf) (@twose)
    • Added a new Coroutine Preemptive Scheduler to prevent the Coroutine from taking too long CPU time to cause other Coroutine to starve. Open the swoole.enable_preemptive_scheduler = On by php.ini. For details, see preemptive_scheduler (@shiguangqi)
    • Added Timer::list() to get TimerIterator, which can traverse all timers, TimerclearAll clears all timers, Timerinfo(int $id) gets timer information, Timer::stats() gets the global timer status (#2498) (@twose)
    • Added two methods getOption and setOption for CoroutineSocket (9d13c29) (@matyhtf)
    • Added $master_pid property and shutdown method to ProcessPool (a1d6eaa) (@matyhtf)
    • Added the 4th parameter of the constructor of ProcessPool, when true, the underlying layer will automatically create the Coroutine in the onWorkerStart callback (8ceb32cd) (@matyhtf)
    • Support non-blocking stream_socket_pair in Runtime hook (#2546) (@matyhtf)
    • Added static_handler_locations setting of HttpServer to set static file path (@matyhtf)
    • Added CoroutineHttpClient->setBasciAuth method to automatically send Authorization header (#2542) (@hongbshi)
    • Added CoroutineHttp2Client->ping method (40041f6) (@shiguangqi)
    • Added task_use_object (#2659) (aa01317) (@twose)

    Enhancement

    • New CoroutineMySQLClient driver (#2538) (@twose)
      • The underlying programming mode using C++ and Coroutine (sync writing, async performance)
      • Support SSL connection (configure ['ssl' => true] when connect)
      • Support request with large data (unlimited)
      • Support response with large data (unlimited)
      • Support fetch to read by line (now fetch is read on demand, data without fetch does not consume user memory) (#2106)
      • Support nextResult read on demand (ibid)
      • Optimized protocol parser
      • date related type decimal precision support
      • Error code and information are consistent with PDO/mysqli
    • CoroutineRedis compatibility mode, enabled by $redis->set(['compatibility_mode' => true]), which can make the result of hmGet/hGetAll/zRange/zRevRange/zRangeByScore/zRevRangeByScore consistent with phpredis (#2529) (@caohao-php)
    • Now 100K Coroutine are allowed to exist at the same time by default (c69d320b) (@twose)
    • Support bailout (can exit the process correctly when a fatal error occurs in the Coroutine) (#2579) (@twose)
    • Server can display a friendly 400/404/503 when error occurred (@matyhtf) (f3f2be9d)
    • Server enable reload_async and send_yield by default (#2555) (9d4a4c47) (@matyhtf)
    • Server->onFinish callback is in Coroutine (@twose)
    • CoroutineHttpClient enable websocket_mask by default (c02f4f85) (@twose)
    • Scheduling operation of Channel outside the Coroutine is no longer allowed (519b6043) (@twose)
    • WebSocketServer will close the connection when the handshake fails (#2510) (@twose)
    • Under the Linux, the dead parent process will automatically send a signal to kill the child process (4b833a3d) (@matyhtf)
    • Memory optimization of Socket->recv (642a3552) (@twose)
    • Floating point calculation optimization (#2572) (@tangl163)
    • All built-in classes prohibit cloning/serializing/unseting-declared-properties (f9c974b8) (@twose)
    • Server->bind will generate a warning and return false when uid is more than UINT32_MAX
    • Support PHP7.4 (#2506) (@twose)

    Fixed

    • Fixed getProcess of ProcessPool (#2522) (@matyhtf)
    • Fixed a bug that exceptions were ignored in some special cases (@twose)
    • Fixed memory leak by timer after fork process (8f3abee7) (@twose)
    • Fixed timezone on non-Linux systems (#2584) (@devnexen)
    • Fixed enable_coroutine=false + task_enable_coroutine=true (#2585) (@matyhtf)
    • Fixed Http2's trailer method can not output a empty value header (#2578) (@twose)
    • Fixed CoroutineHttpClient->setCookies memory error in special cases (#2644) (@Yurunsoft)
    • Fixed #2639 (#2656) (@mabu233)
    • Fixed arginfo_swoole_process_pool_getProcess (#2658) (@mabu233)
    • Fixed static_handler does not support soft links (@matyhtf)
    • Fixed a bug (I don't know how to describe it) (22504dd4) (@matyhtf)
    • Fixed Server->getClientInfo error (#2639) (@matyhtf)
    • Fixed an illegal operation of the same Socket with multiple Coroutine operations (#2661) (@twose)
    • Fixed swoole_table iterator coredump (#2663) (@mabu233)

    Coroutine scheduler ?

    • Added SwooleCoroutineScheduler class as the entry for the cli script, replacing go() + SwooleEvent::wait()
    • Added SwooleCoroutineRun function to provide wrapper for SwooleCoroutineScheduler
    • go() + SwooleEvent::wait() may be deprecated

    Internal

    • Continuous underlying code quality optimization work (@swoole)
    • More unit tests, and use the assertion library swoole/assert based on webmozart/assert secondary development (@twose)
    • Completely abolish the Windows support plan
    • CoroutineHttp2Client refactor (f64874c3) (@matyhtf)
    • The faster callback function caller (@twose)

    Experimental content

    • May add CoroutineServer and CoroutineHttpServer in 5.0
  • solr 2.5.0
    - Atomic Updates (partials) - Simple Optimistic Concurrency - Compatibility with PHP 7.1, 7.2, 7.3, latest 7.4 - Enable gzip encoding if server supports it - Fix Real Time Get requests fails if it wasn't the first request - Fix addQueryField return wrong query - Fix Solr Extension build fail with curl 7.19+
  • gRPC 1.22.0
    - gRPC C Core 1.22 update
  • rdkafka 3.1.1
    * Expose query watermark offsets (#219, @gytislakavicius) * Support sending timestamp (epoch ms) in producev (#228, @lkm) * Fix KafkaTopic::producev causing segfault on librdkafka 1.0.0 (#222, @Steveb-p) * Fix version parsing (#224, @dariuskasiulevicius)
  • datadog_trace 0.29.0
    ### Fixed - Edge case where the extension version and userland version can get out of sync #488

    Changed

    • Prefix hostnames as service names with host- to ensure compatibility with the Agent #490
tagged:

Link:


Trending Topics: