一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

async-helper|PHP 的異步進(jìn)程助手

 啊司com 2018-02-03

async-helper 簡(jiǎn)介 PHP 的異步進(jìn)程助手,借助于 AMQP 實(shí)現(xiàn)異步執(zhí)行 PHP 的方法,將一些很耗時(shí)、追求高可用、需要重試機(jī)制的操作放到異步進(jìn)程中去執(zhí)行,將你的 HTTP 服務(wù)從繁重的業(yè)務(wù)邏輯中解脫出來(lái)。以一個(gè)較低的成本將傳統(tǒng) PHP 業(yè)務(wù)邏輯轉(zhuǎn)換成非阻塞、高可用、可擴(kuò)展的異步模式。

依賴

  1. php 7.1.5+

  2. ext-bcmath

  3. ext-amqp 1.9.1+

  4. ext-memcached 3.0.3+

安裝 通過(guò) composer 安裝

composer require l669/async-helper 或直接下載項(xiàng)目源碼

wget https://github.com/l669306630/async-helper/archive/master.zip 使用范例 業(yè)務(wù)邏輯:這里定義了很多等待被調(diào)用的類和方法,在你的項(xiàng)目中這可能是數(shù)據(jù)模型、或是一個(gè)發(fā)送郵件的類。

  1. <>php

  2. class SendMailHelper

  3. {

  4.    /**

  5.     * @param array $mail

  6.     * @throws Exception

  7.     */

  8.    public static function request($mail)

  9.    {

  10.        // 在這里發(fā)送郵件,或是通過(guò)調(diào)用第三方提供的服務(wù)發(fā)送郵件

  11.        // 發(fā)送失敗的時(shí)候你拋出了異常,希望被進(jìn)程捕獲,并按設(shè)定的規(guī)則進(jìn)行重試

  12.    }    

  13. }

生產(chǎn)者:通常是 HTTP 服務(wù),傳統(tǒng)的 PHP 項(xiàng)目或是一個(gè)命令行程序,接收到某個(gè)請(qǐng)求或指令后進(jìn)行一系列的操作。

  1. <>php

  2. use l669\AsyncHelper;

  3. class UserController

  4. {

  5.    public function register()

  6.    {

  7.        // 假設(shè)這是一個(gè)用戶注冊(cè)的請(qǐng)求,用戶提交了姓名、郵箱、驗(yàn)證碼

  8.        // 第一步、校驗(yàn)用戶信息

  9.        // 第二步、實(shí)例化異步助手,這時(shí)候會(huì)連接 AMQP

  10.        $async_helper = AsyncHelper([

  11.            'host' => '127.0.0.1',

  12.            'port' => '5672',

  13.            'user' => 'root',

  14.            'pass' => '123456',

  15.            'vhost' => '/'

  16.        ]);

  17.        // 第三步、保存用戶信息到數(shù)據(jù)庫(kù)

  18.        $mail = [

  19.            'from' => 'service@yourdomain.com',

  20.            'to' => 'username@163.com',

  21.            'subject' => '恭喜你注冊(cè)成功',

  22.            'body' => '請(qǐng)點(diǎn)擊郵件中的鏈接完成驗(yàn)證,吧啦啦啦'

  23.        ];

  24.        // 第四步、通過(guò)異步助手發(fā)送郵件

  25.        $async_helper->run('\\SendMailHelper', 'request', [$mail]);

  26.        // 這是同步的模式去發(fā)送郵件,

  27.        // 如果郵件服務(wù)響應(yīng)遲緩或異常,就會(huì)直接影響該請(qǐng)求的響應(yīng)時(shí)間,甚至丟失這封重要郵件。

  28.        // SendMailHelper::request($mail);

  29.    }

  30. }

消費(fèi)者:PHP 的異步進(jìn)程,監(jiān)聽(tīng)消息隊(duì)列,執(zhí)行你指定的方法。并且該消費(fèi)者進(jìn)程是可擴(kuò)展的高可用的服務(wù),這一切都得益于 AMQP,這是系統(tǒng)解耦、布局微服務(wù)的最佳方案。

consume.php

  1. <>php

  2. require_once('vendor/autoload.php');

  3. require_once('SendMailHelper.php');

  4. use l669\AsyncHelper;

  5. use l669\CacheHelper;

  6. $cache_helper = new CacheHelper('127.0.0.1', 11211);

  7. while(true){

  8.    try{

  9.        $async_helper = new AsyncHelper([

  10.            'host' => '127.0.0.1',

  11.            'port' => '5672',

  12.            'user' => 'root',

  13.            'pass' => '123456',

  14.            'vhost' => '/',

  15.            'cacheHelper' => $cache_helper

  16.        ]);

  17.        $async_helper->consume();

  18.    }catch(Exception $e){

  19.        // 可以在這里記錄一些日志

  20.    }

  21. }

php consume.php 和傳統(tǒng) PHP 相比 對(duì)任何 PHP 方法通過(guò)反射進(jìn)行異步執(zhí)行; 高可用,執(zhí)行方法進(jìn)入消息隊(duì)列,即使服務(wù)器宕機(jī),執(zhí)行任務(wù)也不丟失; 高可用,對(duì)異??梢赃M(jìn)行不限次數(shù)和時(shí)間的重試,重試次數(shù)和時(shí)間可配置; 支持對(duì)多個(gè)異步方法包含在事務(wù)中執(zhí)行,支持回滾事務(wù); 方法的參數(shù)類型支持除資源類型(resource)和回調(diào)函數(shù)(callable)外的任意類型的參數(shù); 得益于 AMQP,異步方法可以承受高并發(fā)、高負(fù)載,支持集群部署、橫向擴(kuò)展; 低延時(shí),實(shí)測(cè)延時(shí)時(shí)間 0.016 ~ 0.021s; 適用于:日常數(shù)據(jù)庫(kù)操作、日志收集、金融交易、消息推送、發(fā)送郵件和短信、數(shù)據(jù)導(dǎo)入導(dǎo)出、計(jì)算大量數(shù)據(jù)生成報(bào)表; 附錄 安裝 memcached 安裝 rabbitmq 安裝 php7.1.5、ext-amqp、ext-memcached 安裝 supervisor


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    日本女人亚洲国产性高潮视频| 国产欧美高清精品一区| 国产一区二区久久综合| 国产精品99一区二区三区| 日韩黄色一级片免费收看| 久热人妻中文字幕一区二区| 欧美丝袜诱惑一区二区| 精品少妇一区二区视频| 亚洲中文在线男人的天堂| 免费大片黄在线观看国语| 久久国产精品热爱视频| 国产又粗又黄又爽又硬的| 又黄又硬又爽又色的视频| 在线懂色一区二区三区精品| 国产欧美日产中文一区| 91欧美一区二区三区成人| 国产av乱了乱了一区二区三区| 久久亚洲国产视频三级黄| 久久国产青偷人人妻潘金莲| 香蕉久久夜色精品国产尤物| 亚洲欧美日本国产不卡| 国产成人综合亚洲欧美日韩| 美国女大兵激情豪放视频播放| 日韩欧美好看的剧情片免费| 视频一区日韩经典中文字幕| 久久热麻豆国产精品视频| 五月婷婷欧美中文字幕 | 男人的天堂的视频东京热| 小草少妇视频免费看视频| 欧美日韩亚洲国产综合网| 日韩不卡一区二区三区色图| 自拍偷拍福利视频在线观看| 加勒比东京热拍拍一区二区| 国产一区二区三区不卡| 一区二区不卡免费观看免费| 日本91在线观看视频| 亚洲第一区欧美日韩在线| 欧美尤物在线视频91| 日本道播放一区二区三区| 日本欧美视频在线观看免费 | 欧美一区二区在线日韩|