成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

Swoole 2.1 正式版發(fā)布,協(xié)程+通道帶來(lái)全新的 PHP 編程模式

seanHai / 1044人閱讀

摘要:的異步并行高性能網(wǎng)絡(luò)通信引擎已發(fā)布版本。新版本提供了全新的短名,完整支持了協(xié)程通道特性,為語(yǔ)言帶來(lái)了全新的編程模式。的借鑒至語(yǔ)言,在此向語(yǔ)言開(kāi)發(fā)組致敬。其他服務(wù)器端提供了很多共個(gè)支持協(xié)程的類(lèi),可以在這些服務(wù)器程序中使用協(xié)程。

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

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語(yǔ)言的chan不同,由于PHP是動(dòng)態(tài)語(yǔ)言,所以可以向通道內(nèi)投遞任意類(lèi)型的變量。

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" => "[email protected]"];
    $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");
服務(wù)器端
$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提供了很多CoServer、CoWebSocketServer、CoHttpServer、CoRedisServer4個(gè)支持協(xié)程的Server類(lèi),可以在這些服務(wù)器程序中使用協(xié)程API。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/28238.html

相關(guān)文章

  • PHP 協(xié)程:Go + Chan + Defer

    摘要:為語(yǔ)言提供了強(qiáng)大的協(xié)程編程模式。提供的協(xié)程語(yǔ)法借鑒自,在此向開(kāi)發(fā)組致敬協(xié)程可以與很好地互補(bǔ)。并發(fā)執(zhí)行使用創(chuàng)建協(xié)程,可以讓和兩個(gè)函數(shù)變成并發(fā)執(zhí)行。協(xié)程需要拿到請(qǐng)求的結(jié)果。 Swoole4為PHP語(yǔ)言提供了強(qiáng)大的CSP協(xié)程編程模式。底層提供了3個(gè)關(guān)鍵詞,可以方便地實(shí)現(xiàn)各類(lèi)功能。 Swoole4提供的PHP協(xié)程語(yǔ)法借鑒自Golang,在此向GO開(kāi)發(fā)組致敬 PHP+Swoole協(xié)程可以與...

    nidaye 評(píng)論0 收藏0
  • PHP相關(guān)

    摘要:的機(jī)器學(xué)習(xí)庫(kù)的機(jī)器學(xué)習(xí)庫(kù),包括算法交叉驗(yàn)證神經(jīng)網(wǎng)絡(luò)等內(nèi)容。在即將到來(lái)的大會(huì)上,她將和大家分享在機(jī)器學(xué)習(xí)領(lǐng)域的全新可能。入門(mén)總結(jié)入門(mén)相關(guān),如安裝配置基本使用等。 基于 Swoole 開(kāi)發(fā) PHP 擴(kuò)展 Swoole-1.9.7 增加了一個(gè)新特性,可以基于 Swoole 使用 C++ 語(yǔ)言開(kāi)發(fā)擴(kuò)展模塊,在擴(kuò)展模塊中可以注冊(cè) PHP 內(nèi)置函數(shù)和類(lèi)?,F(xiàn)在可以基于 Swoole 來(lái)編寫(xiě) PHP ...

    lewinlee 評(píng)論0 收藏0
  • Swoole 2019 :化繁為簡(jiǎn)、破繭成蝶

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

    adam1q84 評(píng)論0 收藏0
  • Swoole 4.0 式版,面向生產(chǎn)環(huán)境 PHP 協(xié)程引擎

    摘要:在禁止場(chǎng)景中使用協(xié)程會(huì)出現(xiàn)各種莫名其妙的問(wèn)題發(fā)生。限制了協(xié)程的應(yīng)用范圍。新版本基于匯編代碼實(shí)現(xiàn)了全新的協(xié)程內(nèi)核。實(shí)現(xiàn)了對(duì)所有語(yǔ)法的支持。穩(wěn)定性和健壯性均已達(dá)到工業(yè)級(jí)的水準(zhǔn)。完全可用于大型項(xiàng)目的生產(chǎn)環(huán)境中。 Swoole雖然在2016年就支持了協(xié)程特性,但由于底層是基于setjmp/longjmp實(shí)現(xiàn)的stackless方案。因此在某些場(chǎng)景下,如call_user_func、array_...

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

    摘要:年月日,在上海舉行的第六屆中國(guó)開(kāi)發(fā)者大會(huì)上,騰訊開(kāi)源項(xiàng)目首次全面發(fā)布版本,閱文集團(tuán)高級(jí)開(kāi)發(fā)工程師梁晨對(duì)如何通過(guò)構(gòu)建高性能框架做了經(jīng)驗(yàn)分享。分享內(nèi)容作為騰訊開(kāi)源的框架,在發(fā)布之后即受到開(kāi)源領(lǐng)域的關(guān)注。閱文集團(tuán)本身也有一塊新的業(yè)務(wù)在使用。 2018年5月19日,在上海舉行的第六屆中國(guó)PHP開(kāi)發(fā)者大會(huì)(PHPCon)上,騰訊開(kāi)源項(xiàng)目TARS首次全面發(fā)布PHP版本,閱文集團(tuán)高級(jí)開(kāi)發(fā)工程師梁晨對(duì)...

    JasonZhang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<