中文在线一区二区_欧美在线综合_久久久久久综合_欧美一区二区三区视频_国产免费看_国产福利精品一区

協(xié)程

4.0 版本開始 Swoole 提供了完整的協(xié)程(Coroutine)+ 通道(Channel)特性,帶來全新的 CSP 編程模型。應(yīng)用層可使用完全同步的編程方式,底層自動實現(xiàn)異步IO。

協(xié)程可以理解為純用戶態(tài)的線程,其通過協(xié)作而不是搶占來進(jìn)行切換。相對于進(jìn)程或者線程,協(xié)程所有的操作都可以在用戶態(tài)完成,創(chuàng)建和切換的消耗更低。Swoole 可以為每一個請求創(chuàng)建對應(yīng)的協(xié)程,根據(jù) IO 的狀態(tài)來合理的調(diào)度協(xié)程,這會帶來了以下優(yōu)勢:

  • 開發(fā)者可以無感知的用同步的代碼編寫方式達(dá)到 異步IO 的效果和性能,避免了傳統(tǒng)異步回調(diào)所帶來的離散的代碼邏輯和陷入多層回調(diào)中導(dǎo)致代碼無法維護(hù);
  • 同時由于底層封裝了協(xié)程,所以對比傳統(tǒng)的 PHP 層協(xié)程框架,開發(fā)者不需要使用 yield 關(guān)鍵詞來標(biāo)識一個 協(xié)程IO操作,所以不再需要對 yield 的語義進(jìn)行深入理解以及對每一級的調(diào)用都修改為 yield,這極大地提高了開發(fā)效率;
  • 可以滿足大部分開發(fā)者的需求。對于私有協(xié)議,開發(fā)者可以使用協(xié)程的 TCP 或者 UDP 接口去方便的封裝。

注意事項

  • 全局變量:協(xié)程使得原有的異步邏輯同步化,但是在協(xié)程中的切換是隱式發(fā)生的,所以在協(xié)程中切換的前后不能保證 全局變量 以及 static 變量 的一致性。
  • swoole 協(xié)程與 xdebug、xhprof、blackfirezend 擴(kuò)展不兼容,例如不能使用 xhprof協(xié)程 server 進(jìn)行性能分析采樣。

在 EasySwoole 中使用和創(chuàng)建協(xié)程

當(dāng)提示類似 PHP Fatal error: Uncaught Swoole\Error: API must be called in the coroutine in /root/easyswoole/test_coroutine.php:7 錯誤時,說明該 API 必須在協(xié)程環(huán)境下使用。那該如何創(chuàng)建協(xié)程環(huán)境呢?其實很簡單,我們只需要這樣寫 \Swoole\Coroutine::create(function () { // 這里面就是協(xié)程環(huán)境 });\Swoole\Coroutine\run(function() { // 這里面就是協(xié)程環(huán)境 });go(function() { // 這里面就是協(xié)程環(huán)境});,上述提到的三種方式均可用于創(chuàng)建協(xié)程環(huán)境。只需把調(diào)用代碼寫在匿名閉包函數(shù)里即可調(diào)用上述錯誤提到的 API

EasySwoole 框架主進(jìn)程中使用協(xié)程

這里所說的主進(jìn)程主要指的是在 EasySwoole 服務(wù)啟動前調(diào)用協(xié)程 API 的需求,包括在 EasySwoolebootstrap 事件initialize 事件mainServerCreate 事件 中使用協(xié)程。關(guān)于前文提到的事件詳細(xì)請看 全局事件

簡單使用示例如下:

<?php
$scheduler = new \Swoole\Coroutine\Scheduler();
$scheduler->add(function() {
    /* 調(diào)用協(xié)程API */

    // 用戶可以在這里調(diào)用上述協(xié)程 API

});
$scheduler->start();
// 清除全部定時器
\Swoole\Timer::clearAll();

EasySwoole 框架 Worker 進(jìn)程中使用協(xié)程

這里所說的 Worker 進(jìn)程是指 EasySwoole 服務(wù)啟動之后的進(jìn)程中調(diào)用協(xié)程 API 的需求,主要包括在 自定義進(jìn)程 等進(jìn)程中調(diào)用協(xié)程 API。注意:在 Http 控制器 中如果是處于 api 接口環(huán)境下就已經(jīng)是協(xié)程環(huán)境了。可以簡單理解為當(dāng)一個請求進(jìn)來的時候 swoole 底層就自動創(chuàng)建了一個協(xié)程去處理這個請求,所以這個請求里的處理邏輯其實已經(jīng)是在協(xié)程環(huán)境下了。

簡單使用示例如下:

<?php
\Swoole\Coroutine::create(function () {
    /* 調(diào)用協(xié)程API */

    // 用戶可以在這里調(diào)用上述協(xié)程 API
});

// 或者使用如下:
go(function() {
    /* 調(diào)用協(xié)程API */

    // 用戶可以在這里調(diào)用上述協(xié)程 API
});
主站蜘蛛池模板: 婷婷精品 | 国产视频三区 | 成人乱人乱一区二区三区 | 黄色片免费看 | 亚洲无吗电影 | 一本色道久久综合狠狠躁篇怎么玩 | 91在线观看视频 | 黄色视屏免费在线观看 | 九九热在线播放 | 欧美日本在线观看 | 成人精品一区二区三区中文字幕 | 国产精品成人3p一区二区三区 | 亚洲免费看片 | 中文字幕成人在线 | 久久尤物免费一区二区三区 | 男女免费观看在线爽爽爽视频 | 国产精品久久久久一区二区三区 | 天天操人人干 | 久草.com | 免费一级特黄做受大片 | 一区二区蜜桃 | 天天干天天骑 | a国产精品| 亚洲精品一区二区三区 | 国产真实精品久久二三区 | 美日韩在线 | 成人在线免费看视频 | 日韩精品视频在线播放 | 欧美激情精品久久久久久 | 亚洲精品久久久久久久久久久 | 99在线免费视频 | 亚洲午夜精品视频 | 国产精品一卡二卡 | 久久亚洲一区二区 | 国色天香成人网 | 爱干在线 | 影视在线观看 | 久草电影在线观看 | 久久久美女 | 欧美激情视频一区二区三区在线播放 | 麻豆自拍偷拍 |