Swoole 4.0 正式版,面向生產環境的 PHP 協程引擎

來源:互聯網
上載者:User

Swoole雖然在2016年就支援了協程特性,但由於底層是基於setjmp/longjmp實現的stackless方案。因此在某些情境下,如call_user_funcarray_map__destruct中無法使用協程。大型應用程式中邏輯非常複雜,多人協作的團隊中,開發人員很容易踩到坑。在禁止情境中使用協程API會出現各種莫名其妙的問題發生。限制了協程的應用範圍。

新版本4.0基於boost.context 1.60彙編代碼實現了全新的協程核心。在儲存PHP函數調用棧的基礎上,增加了C棧的上下文儲存。實現了對所有PHP文法的支援。現在在任意PHP的函數,包括call_user_func、反射、魔術方法、array_map中均可使用協程。

現在可以在PHP代碼中任意位置使用協程,開發人員不再需要擔心使用情境問題。4.0版本我們與SwooleDistributed/Swoft/EasySwoole等架構作者進行了緊密合作,在大量項目中進行了灰階試用。穩定性和健壯性均已達到工業級的水準。完全可用於大型項目的生產環境中。

go(function() {    array_map("test", array("func start\n"));    echo "co end\n";});  function test($p) {    echo $p;    co::sleep(1);    echo "func end \n";}
4.0分支使用了 C++11標準,建議使用 gcc-4.8或更高版本。

全域變數隔離

新版本中底層對全域變數進行了隔離,現在可以使用Swoole\Process建立多個Swoole\Server執行個體了。

for ($i = 0; $i < 2; $i++){    $p = new swoole_process(function () use ($i) {        $port = 9501 + $i;        $http = new swoole_http_server("127.0.0.1", $port);        $http->on("start", function ($server) use ($port) {            echo "Swoole http server is started at http://127.0.0.1:{$port}\n";        });        $http->on("request", function ($request, $response) {            $response->header("Content-Type", "text/plain");            $response->end("Hello World\n");        });        $http->start();    }, false, false);    $p->start();}

其他更新

  • 修複http2伺服器無法向Chrome瀏覽器用戶端發送超過16K資料的問題
  • 修複BASE模式下Task進程無法重啟的問題
  • 增加Channel->peek方法,用於窺視資料
  • 修複Server->pause/resumeSWOOLE_PROCESS下無法使用的問題
  • 移除Linux AIO,現在無論如何設定都使用線程池實現非同步檔案IO
  • 支援MySQL預存程序

下載 4.0

  • GITHUB:https://github.com/swoole/swo...
  • 開源中國:https://gitee.com/swoole/swoo...
  • PECL:https://pecl.php.net/package/...
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.