成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁(yè) > 知識(shí)庫(kù) > PHP異步進(jìn)程助手async-helper

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

熱門(mén)標(biāo)簽:南寧高頻外呼回?fù)芟到y(tǒng)哪家好 專(zhuān)業(yè)電話機(jī)器人批發(fā)商 400電話申請(qǐng)方法收費(fèi) 江蘇外呼電銷(xiāo)機(jī)器人報(bào)價(jià) 深圳外呼系統(tǒng)收費(fèi) 400電話辦理福州市 電話機(jī)器人危險(xiǎn)嗎 離石地圖標(biāo)注 長(zhǎng)沙crm外呼系統(tǒng)業(yè)務(wù)

簡(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ò)展的異步模式。

依賴(lài)

  • php 5.6+
  • ext-bcmath
  • ext-amqp 1.9.1+
  • 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)用的類(lèi)和方法,在你的項(xiàng)目中這可能是數(shù)據(jù)模型、或是一個(gè)發(fā)送郵件的類(lèi)。

?php
class SendMailHelper 
{
  /**
   * @param array $mail
   * @throws Exception
   */
  public static function request($mail)
  {
    // 在這里發(fā)送郵件,或是通過(guò)調(diào)用第三方提供的服務(wù)發(fā)送郵件
    // 發(fā)送失敗的時(shí)候你拋出了異常,希望被進(jìn)程捕獲,并按設(shè)定的規(guī)則進(jìn)行重試
  }  
}

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

?php 
use l669\AsyncHelper;
class UserController
{
  public function register()
  {
    // 假設(shè)這是一個(gè)用戶(hù)注冊(cè)的請(qǐng)求,用戶(hù)提交了姓名、郵箱、驗(yàn)證碼
    // 第一步、校驗(yàn)用戶(hù)信息
    // 第二步、實(shí)例化異步助手,這時(shí)候會(huì)連接 AMQP
    $async_helper = new AsyncHelper([
      'host' => '127.0.0.1',
      'port' => '5672',
      'user' => 'root',
      'pass' => '123456',
      'vhost' => '/'
    ]);
    // 第三步、保存用戶(hù)信息到數(shù)據(jù)庫(kù)
    $mail = [
      'from' => 'service@yourdomain.com', 
      'to' => 'username@163.com', 
      'subject' => '恭喜你注冊(cè)成功',
      'body' => '請(qǐng)點(diǎn)擊郵件中的鏈接完成驗(yàn)證....'
    ];
    // 第四步、通過(guò)異步助手發(fā)送郵件
    $async_helper->run('\\SendMailHelper', 'request', [$mail]);
    
    // 這是同步的模式去發(fā)送郵件,如果郵件服務(wù)響應(yīng)遲緩或異常,就會(huì)直接影響該請(qǐng)求的響應(yīng)時(shí)間,甚至丟失這封重要郵件
    // SendMailHelper::request($mail);
  }
}

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

consume.php

?php
require_once('vendor/autoload.php');
require_once('SendMailHelper.php');

use l669\AsyncHelper;
use l669\CacheHelper;

$cache_helper = new CacheHelper('127.0.0.1', 11211);
while(true){
  try{
    $async_helper = new AsyncHelper([
      'host' => '127.0.0.1',
      'port' => '5672',
      'user' => 'root',
      'pass' => '123456',
      'vhost' => '/',
      'cacheHelper' => $cache_helper
    ]);
    $async_helper->consume();
  }catch(Exception $e){
    // 可以在這里記錄一些日志
    sleep(2);
  }
}

# 在命令行下啟動(dòng)消費(fèi)者進(jìn)程,推薦使用 supervisor 來(lái)管理進(jìn)程

php consume.php

支持事務(wù):需要一次提交執(zhí)行多個(gè)異步方法,事務(wù)可以確保完成性。

// 接著上面的示例來(lái)說(shuō),這里省略了一些重復(fù)的代碼,下同
$async_helper->beginTransaction();
try{
  $async_helper->run('\\SendMailHelper', 'request', [$mail1]);
  $async_helper->run('\\SendMailHelper', 'request', [$mail2]);
  $async_helper->run('\\SendMailHelper', 'request', [$mail3]);
  $async_helper->commit();
}catch(\Exception $e){
  $async_helper->rollback();
}

阻塞式重試:當(dāng)異步進(jìn)程執(zhí)行一個(gè)方法,方法內(nèi)部拋出異常時(shí)進(jìn)行重試,一些必須遵循執(zhí)行順序的業(yè)務(wù)就要采用阻塞式的重試,通過(guò)指定重試最大阻塞時(shí)長(zhǎng)來(lái)控制。

use l669\CacheHelper;
use l669\AsyncHelper;
$async_helper = new AsyncHelper([
  'host' => '127.0.0.1',
  'port' => '5672',
  'user' => 'root',
  'pass' => '123456',
  'vhost' => '/',
  'cacheHelper' => new CacheHelper('127.0.0.1', 11211),
  'retryMode' => AsyncHelper::RETRY_MODE_REJECT, // 阻塞式重試
  'maxDuration' => 600              // 最長(zhǎng)重試 10 分鐘
]);
$send_mail_helper = new \SendMailHelper();
$mail = new \stdClass();
$mail->from = 'service@yourdomain.com';
$mail->to = 'username@163.com';
$mail->subject = '恭喜你注冊(cè)成功';
$mail->body = '請(qǐng)點(diǎn)擊郵件中的鏈接完成驗(yàn)證....';
$async_helper->run($send_mail_helper, 'request', [$mail]);

// 如果方法中需要拋出異常來(lái)結(jié)束程序,又不希望被異步進(jìn)程重試,可以拋出以下幾種錯(cuò)誤碼,進(jìn)程捕獲到這些異常后會(huì)放棄重試:
// l669\AsyncException::PARAMS_ERROR
// l669\AsyncException::METHOD_DOES_NOT_EXIST
// l669\AsyncException::KNOWN_ERROR

非阻塞式重試:當(dāng)異步執(zhí)行的方法內(nèi)部拋出異常,async-helper 會(huì)將該方法重新放進(jìn)隊(duì)列的尾部,先執(zhí)行新進(jìn)入隊(duì)列的方法,回頭再重試剛才執(zhí)行失敗的方法,通過(guò)指定最大重試次數(shù)來(lái)控制。

use l669\CacheHelper;
use l669\AsyncHelper;
$async_helper = new AsyncHelper([
  'host' => '127.0.0.1',
  'port' => '5672',
  'user' => 'root',
  'pass' => '123456',
  'vhost' => 'new',
  'cacheHelper' => new CacheHelper('127.0.0.1', 11211),
  'queueName' => 'emails.vip',          // 給付費(fèi)的大爺走 VIP 隊(duì)列
  'retryMode' => AsyncHelper::RETRY_MODE_TTL,   // 非阻塞式重試
  'maxRetries' => 10               // 最多重試 10 次
]);
$mail = new \stdClass();
$mail->from = 'service@yourdomain.com';
$mail->to = 'username@163.com';
$mail->subject = '恭喜你注冊(cè)成功';
$mail->body = '請(qǐng)點(diǎn)擊郵件中的鏈接完成驗(yàn)證....';
$async_helper->run('\\SendMailHelper', 'request', [$mail]);

應(yīng)用和解惑

  • 我們采用的是開(kāi)源的 RabbitMQ 來(lái)為我們提供的 AMQP 服務(wù)。
  • 你的項(xiàng)目部署在擁有很多服務(wù)器節(jié)點(diǎn)的集群上,每個(gè)節(jié)點(diǎn)的程序都需要寫(xiě)日志文件,現(xiàn)在的問(wèn)題就是要收集所有節(jié)點(diǎn)上面的日志到一個(gè)地方,方便我們及時(shí)發(fā)現(xiàn)問(wèn)題或是做一些統(tǒng)計(jì)。所有節(jié)點(diǎn)都可以使用 async-helper 異步調(diào)用一個(gè)寫(xiě)日志的方法,而執(zhí)行這個(gè)寫(xiě)日志的方法的進(jìn)程只需要在一臺(tái)機(jī)器上啟動(dòng)就可以了,這樣所有節(jié)點(diǎn)的日志就都實(shí)時(shí)掌握在手里了。
  • 做過(guò)微信公眾號(hào)開(kāi)發(fā)的都知道,騰訊微信可以將用戶(hù)的消息推送到我們的服務(wù)器,如果我們?cè)?5s 內(nèi)未及時(shí)響應(yīng),騰訊微信會(huì)重試 3 次,其實(shí)這就是消息隊(duì)列的應(yīng)用,使用 async-helper 可以輕松的做和這一樣的事情。
  • 得益于 RabbitMQ,你可以輕松的橫向擴(kuò)展你的消費(fèi)者進(jìn)程的能力,因?yàn)?RabbitMQ 天生就支持集群部署,你可以輕松的啟動(dòng)多個(gè)消費(fèi)者進(jìn)程,或是將消費(fèi)者進(jìn)程分布到多臺(tái)機(jī)器上。
  • 如果 RabbitMQ 服務(wù)不可用怎么辦呢?部署 RabbitMQ 高可用服務(wù)是容易的,對(duì)外提供單一 IP,這個(gè) IP 是個(gè)負(fù)載均衡,背后是 RabbitMQ 集群,負(fù)載均衡承擔(dān)對(duì)后端集群節(jié)點(diǎn)的健康檢查。
  • async-helper 能否承受高并發(fā)請(qǐng)求?async-helper 生產(chǎn)者使用的是短連接,也就說(shuō)在你的 HTTP 還沒(méi)有響應(yīng)瀏覽器的時(shí)候 async-helper 就已經(jīng)結(jié)束了工作,你連接 RabbitMQ 的時(shí)間是百分之百小于 HTTP 請(qǐng)求的時(shí)間的,換言之,只要 RabbitMQ 承受并發(fā)的能力超過(guò)你的 HTTP 服務(wù)的承受并發(fā)的能力,RabbitMQ 就永遠(yuǎn)不會(huì)崩,通過(guò)橫向擴(kuò)展 RabbitMQ 很容易做到的。

和傳統(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ù)類(lèi)型支持除資源類(lèi)型(resource)和回調(diào)函數(shù)(callable)外的任意類(lèi)型的參數(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)表;

標(biāo)簽:興安盟 曲靖 株洲 南京 南昌 太原 濱州 白酒營(yíng)銷(xiāo)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP異步進(jìn)程助手async-helper》,本文關(guān)鍵詞  PHP,異步,進(jìn)程,助手,async-helper,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP異步進(jìn)程助手async-helper》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于PHP異步進(jìn)程助手async-helper的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    色婷婷久久久| 欧美高清性xxxxhdvideosex| fc2ppv在线观看| 日韩啪啪网站| 成人免费图片免费观看| 蜜桃精品视频在线观看| 亚洲欧美综合v| 亚洲欧美视频一区二区三区| 国产精品午夜免费| 精品极品在线| 国产毛片视频| 日本少妇色视频| 国产区在线看| 久久成人福利视频| 亚洲女人天堂色在线7777| 日韩欧美在线不卡| 国产成人精品亚洲精品色欲| 日本中文字幕在线不卡| 精品一区电影国产| 久久国产精品无码网站| 亚洲人成网站色在线观看| 国产丝袜高跟一区| 国产精品美女午夜爽爽| 免费观看美女裸体网站| 亚洲少妇最新在线视频| 免费视频观看成人| 国产成人在线视频网址| 狠狠躁夜夜躁人人躁婷婷91| 日韩av中字| 日韩中文字幕无砖| 欧美成人黄色| 亚洲精品网站在线观看| 男女一区二区三区| 精品久久久久久无码人妻| 亚洲精美色品网站| 国产高清自拍视频在线观看| 亚洲精品成人悠悠色影视| 亚洲天堂一区| 日本美女爱爱视频| 日韩中文字幕不卡| 欧美日韩国产一区精品一区| 天堂av中文在线观看| 26uuu亚洲电影| 国产亚洲欧美一区二区| 日韩av免费在线看| 狠狠狠狠狠狠狠| 西西人体一区二区| 精品国产黄色片| 欧美三级午夜理伦三级中文幕| 亚洲 欧美 日韩 综合| 9191成人精品久久| 久久好看免费视频| 91久久国产最好的精华液| 国产精品一色哟哟| 成人精品国产| 在线中文资源天堂| 日韩va亚洲va欧洲va国产| 黄色a级三级三级三级| 尤物av一区二区| 资源视频在线播放免费| 尤物yw午夜国产精品视频明星| 狠狠爱成人网| 婷婷成人激情| 日韩美女主播在线视频一区二区三区| 亚洲啪av永久无码精品放毛片| 91在线视频播放地址| 国产 欧美 在线| 国产吞精囗交久久久| 农村黄色一级片| 色播在线观看| 99视频免费观看蜜桃视频| 操喷在线视频| 在线观看视频在线观看| 蜜桃视频在线观看一区| 麻豆免费精品视频| 波多野结衣中文字幕在线| 日韩一区欧美二区| 亚洲jizzjizz日本少妇| www.99riav| 深夜福利在线视频| 色视频www在线播放国产| 涩涩视频网站在线观看| 国产精品久久久久久久久久| 国产欧美自拍一区| 美女精品自拍一二三四| 污污网站免费在线观看| 亚洲av激情无码专区在线播放| 日本高清中文字幕| 一本加勒比北条麻妃| 久久久男人的天堂| 亚洲日本va中文字幕| 亚洲精品乱码久久久久久日本蜜臀| 2020最新国产精品| 亚洲精品国产一区二区三区四区在线| 亚洲国产视频二区| 免费在线视频一级不卡| 天堂精品一区二区三区| 香蕉av一区二区| 在线国产欧美| av色综合久久天堂av色综合在| 香蕉精品视频在线观看| 中文字幕日韩亚洲| 国产资源在线看| 国产精品国产三级国产三级人妇| 国产精品亚洲第五区在线| 国产精品中出一区二区三区| 国产精品视频资源| av蓝导航精品导航| 在线免费三级电影网站| 成人免费精品动漫网站| 国产极品精品在线观看| 久久av综合| 亚洲黄色www网站| а√天堂中文资源在线bt| 日韩激情视频在线观看| 日本xxxx黄色| 中文字幕人成人乱码亚洲电影| 性chinese极品按摩| 亚洲最大色图| 中文字幕中文字幕中文字幕亚洲无线| 两个人hd高清在线观看| 日本熟妇人妻xxxxx| 一级片在线免费观看视频| 日韩视频一区| 色橹橹欧美在线观看视频高清| 国产福利91精品| 国产精品一品二品| 久久视频免费在线播放| 中文字幕日韩一区二区三区不卡| 天天摸日日操| 日韩网站在线播放| 日本一区二区免费在线观看| 日本理论中文字幕| 中文在线永久免费观看| 成人妖精视频yjsp地址| 免费久久久久久| 欧美色图麻豆| 一二三区中文字幕| 九九热视频在线观看| 欧美激情伊人电影| 中国日本在线视频中文字幕| 吞精囗交69激情欧美| 成人免费自拍视频| 神马午夜电影一区二区三区在线观看| 国产美女三级视频| 亚洲国产精品成人综合| 免费一区二区三区视频狠狠| 男人j桶女人的网站| 欧美xxxx日本和非洲| 欧美中在线观看| 欧美在线激情视频| 欧美久久在线| www.97av.com| 国产精品久久久久久福利一牛影视| 日韩a在线观看| 国产欧美日韩另类| 久久婷婷中文字幕| 操操操日日日| 色哟哟亚洲精品| 天堂中文av| 亚洲色图清纯唯美| 欧美调教femdomvk| 欧美精品一区二区三| 尤物视频..com| 欧美黄免费看| 无码h肉动漫在线观看| 裸体免费网站| 久久亚洲一区| 天天激情综合| 加勒比视频一区| 欧美哺乳videos| 久久高清免费观看| 麻豆国产精品视频| 99riav国产精品视频| 色视频欧美一区二区三区| 青青草原网站在线观看| 看亚洲a级一级毛片| 国产自产高清不卡| 青青草97国产精品免费观看无弹窗版| 久久人人爽人人爽人人| 97欧洲一区二区精品免费| 野外性xxxxfreexxxxx欧美| 久久综合久色欧美综合狠狠| 高清日韩一区| 免费无码毛片一区二三区| 亚洲精品在线视频播放| 天堂网在线.www天堂在线| 凹凸日日摸日日碰夜夜| 国产精品高精视频免费| 黄色片免费网址| 成人看片人aa| 韩国三级丰满少妇高潮| 国产亚洲精品美女久久久久久久久久| 日韩久久精品网| 精品在线手机视频| av电影院在线看| 中文字幕视频免费观看| 奇米影视一区二区三区小说| 久久久精品视频免费| 女女调教被c哭捆绑喷水百合| 在线播放一区二区三区| 精品999在线播放| 国产探花在线精品一区二区| www.色小姐com| 1区2区在线| 91麻豆国产福利在线观看| 激情文学亚洲色图| www.亚洲天堂| 大杳蕉精品视频在线观看| 伊人色综合一区二区三区影院视频| 91在线免费看| 校花撩起jk露出白色内裤国产精品| 久久精品在线视频| 成人精品美女隐私视频| 亚洲精品国产系列| 亚洲性视频h| 国语自产精品视频在免费| 日本护士做爰视频| 中文字幕无码毛片免费看| 日本a级片免费| 中文字幕在线观看免费视频| 日韩三级久久| 中文字幕在线二区| 中文精品一区二区三区| 国产欧美日韩电影| 深田えいみ中文字幕99久久| 九色综合国产一区二区三区| 黄色一级大片在线免费看国产一| 亚洲国产精品久久久久秋霞影院| 最近中文字幕在线中文高清版| 国产探花在线精品| 欧美性受黑人性爽| 淫片在线观看| 不卡视频一二三四| 国产精品被窝福利一区| 激情综合网天天干| 中文字幕日韩一区二区不卡| 日韩欧美黄色| 国产视频三区四区| 在线免费观看成人网| 欧美精品videosex牲欧美| 97超碰人人模人人人爽人人爱| 看全色黄大色大片| 久久亚洲综合色| 亚洲黄色成人久久久| 免费在线日本| 欧美性猛交xxxx乱大交少妇| 国产日韩欧美二区| xnxx国产精品| 国产在线播放你懂的| 少妇丰满尤物大尺度写真| 国语精品一区| 一本久道久久综合婷婷鲸鱼| 先锋影院av| 精品一区二区三区在线成人| 欧美性猛交xxxx乱| 青草影院在线观看| 欧美高清视频不卡网| 精产国品自在线www| 日韩一区二区在线看| 红桃视频一区二区三区免费| 精品黄色一级片| 婷婷综合国产| 7777久久亚洲中文字幕| 天天色天天操综合| 午夜男人的天堂| 在线观看中文字幕2021| 黄色一级片国产| 成人小视频在线看| 日韩av福利| 亚州av电影免费在线观看| 国产精品亲子伦av一区二区三区| 黄色网页免费在线观看| 91九色蝌蚪视频| 欧美艳星kaydenkross| 亚洲伊人色欲综合网| 亚洲欧美综合在线精品| 日韩 欧美 自拍| 亚洲欧洲国产专区| 九九九伊在线综合永久| 中文av在线全新| 日韩高清电影一区| 色哟哟精品观看| 少妇欧美激情一区二区三区| 亚洲美女久久| 黑人巨大精品欧美一区二区三区| 一区二区三区四区视频| 韩国av一区| 日韩精品诱惑一区?区三区| 伊人国产在线看一| 亚洲国产成人tv| 亚洲国产日韩欧美一区二区三区| 成人高清伦理免费影院在线观看| 岛国精品视频在线播放| 日本欧美加勒比视频| 欧美色精品天天在线观看视频| 欧美另类高清视频在线| 国产精品久久网| 久久av秘一区二区三区| 国产中文一区二区三区| 日韩精品免费一区二区三区竹菊| 91在线播放网址| 国产成人综合精品在线| 在线观看黄色小视频| 亚洲国产精品99久久久久久久久| 韩国精品一区二区三区| 亚洲午夜国产成人av电影男同| 成人精品国产免费网站| 成人福利视频在| 97视频久久久| 成人在线视频一区二区三区| 深夜福利影院在线观看| 91视频九色网站| 超碰资源在线| 久草在线视频资源| 亚洲 日韩 国产第一区| 五月激情久久久| 天天色综合天天| 国产精品av免费在线观看| 成人动漫在线观看视频| 国产xxx在线观看| 日韩成人中文电影| 特黄特黄的视频| av资源免费观看| 免费黄色一级网站| 99热这里都是精品| 中文字幕av手机在线| 国产噜噜噜噜久久久久久久久|