亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

使用swoole 定時(shí)器變更超時(shí)未支付訂單狀態(tài)的解決方案

 更新時(shí)間:2019年07月24日 10:01:59   作者:he_xd  
本文主要是借助 swoole 定時(shí)器和 redis 的 zset 來實(shí)現(xiàn)的定時(shí)檢查并過期未支付訂單,感興趣的朋友跟隨小編一起看看吧

如果對(duì)幾種方案沒有很好的想法,可以先看一下延伸閱讀里的其他方案,是一篇laravel china社區(qū)的討論

借助 swoole 定時(shí)器和 redis 的 zset 來實(shí)現(xiàn)的定時(shí)檢查并過期未支付訂單

起源于一個(gè)需求:將30分鐘內(nèi)未支付的訂單過期處理成已失效狀態(tài)。

最常規(guī)簡(jiǎn)單的解決方案:在服務(wù)器上,跑一個(gè)定時(shí)任務(wù),去數(shù)據(jù)表中查詢數(shù)據(jù),查到未支付的訂單,update 一下這些數(shù)據(jù)的狀態(tài),

這些數(shù)據(jù)也可以存在在 redis 中,大致操作都是這樣的。數(shù)據(jù)量少,服務(wù)器沒有很多壓力的時(shí)候,這幾種方案不會(huì)突出優(yōu)劣,想用哪個(gè)用哪個(gè)。

另一種方案: 存儲(chǔ)部分: 借助 redis 的 zset 有序集合,訂單產(chǎn)生的時(shí)候, zadd orders timestamp orderid 將 orderid 保存到對(duì)應(yīng)的

orders 集合中,以時(shí)間戳作為他的 score 分值,存儲(chǔ)部分是這樣的,簡(jiǎn)單 + 占用空間內(nèi)存極小。 讀取部分: 在 swoole 啟動(dòng)時(shí),設(shè)置定時(shí)器,每分鐘去 orders set 中讀取設(shè)置的時(shí)間之前的數(shù)據(jù),個(gè)人為了測(cè)試方便,設(shè)置的讀取前一分鐘到前三十分鐘內(nèi)的數(shù)據(jù)。獲取到數(shù)據(jù)之后,根據(jù)業(yè)務(wù)邏輯處理數(shù)據(jù),然后 zrem orders orderid 命令從集合中移除對(duì)應(yīng)的 orderid。 個(gè)人以為這個(gè)方案是內(nèi)存占用和效率兼具的一個(gè)方案。 代碼如下:

order.php

<?php$server = new swoole_websocket_server("0.0.0.0", 9502);
// 在定時(shí)器中使用協(xié)程需要增加此項(xiàng)配置
$server->set(
  [
    'enable_coroutine' => true
  ]
);
$server->on('workerStart', function ($server, $workerId) {
  $redis = new Swoole\Coroutine\Redis();
  $redis->connect('127.0.0.1', 6379);
  // tick 為持續(xù)觸發(fā)的定時(shí)器
  swoole_timer_tick(10000, function() use ($redis) {
    $upperLimitTime = strtotime('-1 minute');
    $lowerLimitTime = strtotime('-30 minute');
    echo '上限時(shí)間:' . $upperLimitTime . '下限時(shí)間:' . $lowerLimitTime;
    $result = $redis->zrangebyscore('orders', $lowerLimitTime, $upperLimitTime);
    var_dump($result);
    // 根據(jù)查詢到的 id 進(jìn)行業(yè)務(wù)處理,然后 zrem orders orderid 移除處理成功的 orderid 
  });
});
$server->on('message', function (swoole_websocket_server $server, $request) {
  $server->push($request->fd, "hello");
});
$server->start();

測(cè)試過程: php order.php 開啟 swoole 監(jiān)聽,然后新起終端,在 redis 的 orders 有序集合中不斷寫入新數(shù)據(jù),效果如下圖:

延伸閱讀:

1.swoole_timer_tick 文檔

2.laravel china上的相關(guān)文章

總結(jié)

以上所述是小編給大家介紹的使用swoole 定時(shí)器變更超時(shí)未支付訂單狀態(tài)的解決方案,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!

相關(guān)文章

  • laravel框架使用極光推送消息操作示例

    laravel框架使用極光推送消息操作示例

    這篇文章主要介紹了laravel框架使用極光推送消息操作,結(jié)合實(shí)例形式詳細(xì)分析了laravel框架擴(kuò)展jpush-api-php-client實(shí)現(xiàn)極光推送消息具體操作步驟與使用技巧,需要的朋友可以參考下
    2020-02-02
  • PHP第三方登錄—QQ登錄實(shí)現(xiàn)方法

    PHP第三方登錄—QQ登錄實(shí)現(xiàn)方法

    下面小編就為大家?guī)硪黄狿HP第三方登錄—QQ登錄實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-02-02
  • php生成靜態(tài)html頁面的方法(2種方法)

    php生成靜態(tài)html頁面的方法(2種方法)

    在PHP網(wǎng)站開發(fā)中為了網(wǎng)站推廣和SEO等需要,需要對(duì)網(wǎng)站進(jìn)行全站或局部靜態(tài)化處理,PHP生成靜態(tài)HTML頁面有多種方法,比如利用PHP模板、ob系列的函數(shù),本文給大家分享php生成靜態(tài)html頁面的方法(2種方法),感興趣的朋友跟著小編一起學(xué)習(xí)學(xué)習(xí)吧
    2015-09-09
  • Smarty變量用法詳解

    Smarty變量用法詳解

    這篇文章主要介紹了Smarty變量用法,結(jié)合實(shí)例形式分析了php分配變量與配置文件讀取變量的具體使用方法,需要的朋友可以參考下
    2016-05-05
  • FireFox瀏覽器使用Javascript上傳大文件

    FireFox瀏覽器使用Javascript上傳大文件

    本程序是利用3.x的Firefox瀏覽器可以讀取本地文件的特性,實(shí)現(xiàn)通過xmlHttPRequest上傳大文件功能。
    2013-10-10
  • Codeigniter發(fā)送郵件的方法

    Codeigniter發(fā)送郵件的方法

    這篇文章主要介紹了Codeigniter發(fā)送郵件的方法,涉及Codeigniter實(shí)現(xiàn)郵件發(fā)送的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-03-03
  • laravel框架中控制器的創(chuàng)建和使用方法分析

    laravel框架中控制器的創(chuàng)建和使用方法分析

    這篇文章主要介紹了laravel框架中控制器的創(chuàng)建和使用方法,結(jié)合實(shí)例形式詳細(xì)分析了laravel框架控制器的原理、創(chuàng)建、使用方法及相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2019-11-11
  • PHP實(shí)現(xiàn)文件上傳操作和封裝

    PHP實(shí)現(xiàn)文件上傳操作和封裝

    這篇文章主要為大家詳細(xì)介紹了PHP實(shí)現(xiàn)文件上傳操作和封裝,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • PHP+ajaxfileupload+jcrop插件完美實(shí)現(xiàn)頭像上傳剪裁

    PHP+ajaxfileupload+jcrop插件完美實(shí)現(xiàn)頭像上傳剪裁

    在做項(xiàng)目的時(shí)候,經(jīng)常需要一些會(huì)員系統(tǒng)相關(guān)的內(nèi)容,比如頭像的上傳與裁剪等等,下面將這塊內(nèi)容分享給大家
    2014-06-06
  • php數(shù)組去除空值函數(shù)分享

    php數(shù)組去除空值函數(shù)分享

    本文給大家分享一個(gè)使用php制作數(shù)組去除空值函數(shù),非常實(shí)用,推薦給大家,希望大家能夠喜歡。
    2015-02-02

最新評(píng)論