国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Swoole 2.1 正式版發布,協程+通道帶來全新的 PHP 編程模式

seanHai / 1039人閱讀

摘要:的異步并行高性能網絡通信引擎已發布版本。新版本提供了全新的短名,完整支持了協程通道特性,為語言帶來了全新的編程模式。的借鑒至語言,在此向語言開發組致敬。其他服務器端提供了很多共個支持協程的類,可以在這些服務器程序中使用協程。

PHP的異步、并行、高性能網絡通信引擎 Swoole 已發布 2.1.0 版本。新版本提供了全新的短名 API,完整支持了協程(Coroutine)+通道(Channel)特性,為 PHP 語言帶來了全新的編程模式。Swoole 2.1API借鑒至Go語言,在此向Go語言開發組致敬。

Coroutine
go(function () {
    co::sleep(0.5);
    echo "hello";
});
go("test");
go([$object, "method"]);
Channel
$chan = new chan(128);
$chan->push(1234);
$chan->push(1234.56);
$chan->push("hello world");
$chan->push(["hello world"]);
$chan->push(new stdclass);
$chan->push(fopen("test.txt", "r+"));
while($chan->pop());

Go語言的chan不同,由于PHP是動態語言,所以可以向通道內投遞任意類型的變量。

Channel Select
$c1 = new chan(3);
$c2 = new chan(2);
$c3 = new chan(2);
$c4 = new chan(2);

$c3->push(3);
$c3->push(3.1415);

$c4->push(3);
$c4->push(3.1415);

go(function () use ($c1, $c2, $c3, $c4) {
    echo "select
";
    for ($i = 0; $i < 1; $i++)
    {
        $read_list = [$c1, $c2];
        $write_list = [$c3, $c4];
        // $write_list = null;
        $result = chan::select($read_list, $write_list, 5);
        var_dump($result, $read_list, $write_list);

        foreach($read_list as $ch)
        {
            var_dump($ch->pop());
        }

        foreach($write_list as $ch)
        {
            var_dump($ch->push(666));
        }
        echo "exit
";
    }
});

go(function () use ($c3, $c4) {
    echo "producer
";
    co::sleep(1);
    $data = $c3->pop();
    echo "pop[1]
";
    var_dump($data);
});

go(function () {
    co::sleep(10);
});

go(function () use ($c1, $c2) {

    co::sleep(1);
    $c1->push("resume");
    $c2->push("hello");
});
MySQL Client
go(function () {
    $db = new CoMySQL();
    $server = array(
        "host" => "127.0.0.1",
        "user" => "root",
        "password" => "root",
        "database" => "test",
    );

    $db->connect($server);

    $result = $db->query("SELECT * FROM userinfo WHERE id = 3");
    var_dump($result);
});
Redis Client
go(function () {
    $redis = new CoRedis;
    $res = $redis->connect("127.0.0.1", 6379);
    $ret = $redis->set("key", "value");
    var_dump($redis->get("key"));
});
Http Client
go(function () {
    $http = new CoHttpClient("www.google.com", 443, true);
    $http->setHeaders(function () {
        
    });
    $ret = $http->get("/");
    var_dump($http->body);
});
Http2 Client
go(function () {
    $http = new CoHttp2Client("www.google.com", 443, true);
    $req = new coHttp2Request;
    $req->path = "/index.html";
    $req->headers = [
        "host" => "www.google.com",
        "user-agent" => "Chrome/49.0.2587.3",
        "accept" => "text/html,application/xhtml+xml,application/xml",
        "accept-encoding" => "gzip",
    ];
    $req->cookies = ["name" => "rango", "email" => "rango@swoole.com"];
    $ret = $http->send($req);
    var_dump($http->recv());
});
其他 API
co::sleep(100);
co::fread($fp);
co::fwrite($fp, "hello world");
co::gethostbyname("www.google.com");
服務器端
$server = new CoHttpServer("127.0.0.1", 9501);

$server->on("Request", function($request, $response) {

    $http = new CoHttpClient("www.google.com", 443, true);
    $http->setHeaders(function () {
        "X-Power-By" => "Swoole/2.1.0",
    });
    $ret = $http->get("/");
 
    if ($ret) {
        $response->end($http->body);
    }
    else{
        $response->end("recv failed error : {$http->errCode}");
    }
});

$server->start();

Swoole提供了很多CoServerCoWebSocketServerCoHttpServerCoRedisServer4個支持協程的Server類,可以在這些服務器程序中使用協程API

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/28238.html

相關文章

  • PHP 協程:Go + Chan + Defer

    摘要:為語言提供了強大的協程編程模式。提供的協程語法借鑒自,在此向開發組致敬協程可以與很好地互補。并發執行使用創建協程,可以讓和兩個函數變成并發執行。協程需要拿到請求的結果。 Swoole4為PHP語言提供了強大的CSP協程編程模式。底層提供了3個關鍵詞,可以方便地實現各類功能。 Swoole4提供的PHP協程語法借鑒自Golang,在此向GO開發組致敬 PHP+Swoole協程可以與...

    nidaye 評論0 收藏0
  • PHP相關

    摘要:的機器學習庫的機器學習庫,包括算法交叉驗證神經網絡等內容。在即將到來的大會上,她將和大家分享在機器學習領域的全新可能。入門總結入門相關,如安裝配置基本使用等。 基于 Swoole 開發 PHP 擴展 Swoole-1.9.7 增加了一個新特性,可以基于 Swoole 使用 C++ 語言開發擴展模塊,在擴展模塊中可以注冊 PHP 內置函數和類。現在可以基于 Swoole 來編寫 PHP ...

    lewinlee 評論0 收藏0
  • Swoole 2019 :化繁為簡、破繭成蝶

    摘要:開發負責人創建分支,編寫單元測試腳本,編寫代碼,實現提案中的所有內容,最終發起交叉評審,檢查代碼,提出改進意見,反饋給開發負責人,繼續完善細節。 Swoole開源項目從2012年開始發布第一個版本,到現在已經有近7年的歷史。在這七年的時間里: 提交了8821次代碼變更 發布了287個版本 收到并解決1161次issue反饋 合并了603次pull request 共有100位開發者...

    adam1q84 評論0 收藏0
  • Swoole 4.0 式版,面向生產環境 PHP 協程引擎

    摘要:在禁止場景中使用協程會出現各種莫名其妙的問題發生。限制了協程的應用范圍。新版本基于匯編代碼實現了全新的協程內核。實現了對所有語法的支持。穩定性和健壯性均已達到工業級的水準。完全可用于大型項目的生產環境中。 Swoole雖然在2016年就支持了協程特性,但由于底層是基于setjmp/longjmp實現的stackless方案。因此在某些場景下,如call_user_func、array_...

    Zack 評論0 收藏0
  • 干貨| PHPCon上TARS-PHP全面解讀及PPT下載

    摘要:年月日,在上海舉行的第六屆中國開發者大會上,騰訊開源項目首次全面發布版本,閱文集團高級開發工程師梁晨對如何通過構建高性能框架做了經驗分享。分享內容作為騰訊開源的框架,在發布之后即受到開源領域的關注。閱文集團本身也有一塊新的業務在使用。 2018年5月19日,在上海舉行的第六屆中國PHP開發者大會(PHPCon)上,騰訊開源項目TARS首次全面發布PHP版本,閱文集團高級開發工程師梁晨對...

    JasonZhang 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<