<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 4.1.0 重大新特性 ----- ## 支持 Redis/PDO/MySQLi 從`4.1.0`版本開始支持了對`PHP`原生`Redis`、`PDO`、`MySQLi`協程化的支持。 可使用`Swoole\Runtime::enableCorotuine()`將普通的同步阻塞`Redis`、`PDO`、`MySQLi`操作變為協程調度的異步非阻塞`IO` ```php Swoole\Runtime::enableCoroutine(); go(function () { $redis = new redis; $retval = $redis->connect("127.0.0.1", 6379); var_dump($retval, $redis->getLastError()); var_dump($redis->get("key")); var_dump($redis->set("key", "value")); $redis->close(); }); ``` ## 協程跟蹤 新版本增加了兩個方法用于跟蹤協程運行。 * `Coroutine::listCoroutines()`可遍歷當前所有協程 * `Coroutine::getBackTrace($cid)`可獲取某個協程的函數調用棧 ```php function test1() { test2(); } function test2() { while(true) { co::sleep(10); echo __FUNCTION__." \n"; } } $cid = go(function () { test1(); }); go(function () use ($cid) { while(true) { echo "BackTrace[$cid]:\n-----------------------------------------------\n"; //返回數組,需要自行格式化輸出 var_dump(co::getBackTrace($cid))."\n"; co::sleep(3); } }); ``` ```shell BackTrace[1]: ----------------------------------------------- #0 Swoole\Coroutine::sleep(10) called at [/home/htf/workspace/swoole/examples/coroutine/backtrace.php:8] #1 test2() called at [/home/htf/workspace/swoole/examples/coroutine/backtrace.php:3] #2 test1() called at [/home/htf/workspace/swoole/examples/coroutine/backtrace.php:14] ``` --- ## 其他修改 + 重構 `Co\Channel` C底層代碼為C++, 解決復雜場景的非預期結果, 實現高穩定 + 重構 `Co\Http\Client` C底層代碼為C++協程模式, 解決異步時序問題, 實現高穩定 + 支持在協程和Server中使用`exit`, 此時將會拋出可捕獲的`\Swoole\ExitException`異常 + 移除所有迭代器(table/connection/coroutine_list)的PCRE依賴限制 + 增加`open_websocket_close_frame`配置, 可以在onMessage事件中接收close幀 + 廢棄`Http\Response->gzip()`方法,改為使用`http_compression`配置項。底層會自動判斷客戶端傳入的`Accept-Encoding`選擇合適的壓縮方法, 新增谷歌BR壓縮支持 + 增加`Co\Http\Client->addData()`方法,可將內存中的數據作為上傳文件內容進行發送 + `Solaris`系統支持 + Http2支持`MAX_FRAME_SIZE`分幀發送和`MAX_HEADER_LIST_SIZE`處理, 客戶端增加`isStreamExist`方法檢測是否存在對應流 + `swoole_http_response->status`增加`reason`參數 * 修復MySQL prepare 中無符號參數使用了有符號值導致數值溢出的問題 * 修復HTTP2的`onRequest`回調中沒有協程的問題 * 修復`tasking_num`某些特殊情況下變為`-1`的問題 * 修復HTTP2-server的window-update幀構造錯誤 * 修復所有PHP版本下的所有級別的編譯warning * GCC版本小于4.8時將會產生編譯錯誤 * 修復MySQL使用prepare時未使用參數綁定導致的內存分配不斷增長 * 修復HTTP2重連時舊stream內存丟失泄露 底層開發相關 --- + 統一文件命名 [#970](https://github.com/swoole/swoole-src/issues/970) + `Co\Http\Client`使用了`create_obj`和`free_obj`保證內存安全, 防止錯誤的PHP代碼引發內存問題
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看