最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

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

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

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

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

order.php

<?php$server = new swoole_websocket_server("0.0.0.0", 9502);
// 在定時器中使用協(xié)程需要增加此項配置
$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ā)的定時器
  swoole_timer_tick(10000, function() use ($redis) {
    $upperLimitTime = strtotime('-1 minute');
    $lowerLimitTime = strtotime('-30 minute');
    echo '上限時間:' . $upperLimitTime . '下限時間:' . $lowerLimitTime;
    $result = $redis->zrangebyscore('orders', $lowerLimitTime, $upperLimitTime);
    var_dump($result);
    // 根據(jù)查詢到的 id 進行業(yè)務處理,然后 zrem orders orderid 移除處理成功的 orderid 
  });
});
$server->on('message', function (swoole_websocket_server $server, $request) {
  $server->push($request->fd, "hello");
});
$server->start();

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

延伸閱讀:

1.swoole_timer_tick 文檔

2.laravel china上的相關文章

總結

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

相關文章

  • YII實現(xiàn)分頁的方法

    YII實現(xiàn)分頁的方法

    這篇文章主要介紹了YII實現(xiàn)分頁的方法,需要的朋友可以參考下
    2014-07-07
  • php筆記之:php函數(shù)range() round()和list()的使用說明

    php筆記之:php函數(shù)range() round()和list()的使用說明

    本篇文章介紹了,php函數(shù)range() round()和list()的使用說明。需要的朋友參考下
    2013-04-04
  • 一漂亮的PHP圖片驗證碼實例

    一漂亮的PHP圖片驗證碼實例

    在網(wǎng)上看到一個圖片驗證碼,挻漂亮的,但是取回來發(fā)現(xiàn),好像有點小問題,還是改為自己的口味吧,很多時候,如果無法使用,應該是字體的問題。程序所用的字體win7 自帶的,需要上傳到web目錄
    2014-03-03
  • laravel 事件/監(jiān)聽器實例代碼

    laravel 事件/監(jiān)聽器實例代碼

    這篇文章主要介紹了laravel 事件/監(jiān)聽器實例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • Thinkphp3.2實用篇之計算型驗證碼示例

    Thinkphp3.2實用篇之計算型驗證碼示例

    本篇文章主要介紹了Thinkphp3.2實用篇之計算型驗證碼示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • 利用PHP生成靜態(tài)HTML文檔的原理

    利用PHP生成靜態(tài)HTML文檔的原理

    利用PHP,將數(shù)據(jù)庫中的文章數(shù)據(jù)生成單個的HTML文檔。首先,有利于搜索引擎的收錄。其次,避免數(shù)據(jù)庫中的字段暴露在地址欄上,更安全
    2012-10-10
  • 在Win7 中為php擴展配置Xcache

    在Win7 中為php擴展配置Xcache

    XCache是一個又快又穩(wěn)定的PHP opcode緩存器.經(jīng)過良好的測試并在大流量/高負載的生產(chǎn)機器上穩(wěn)定運行.經(jīng)過(在linux上)測試并支持所有現(xiàn)行PHP分支的最新發(fā)布版本,如php5.0~5.6(x64和x86),并支持線程安全/Windows.與同類opcode緩存器相比更勝一籌, 比如能夠快速跟進PHP版本.
    2014-10-10
  • PHP數(shù)字和字符串ID互轉函數(shù)(類似優(yōu)酷ID)

    PHP數(shù)字和字符串ID互轉函數(shù)(類似優(yōu)酷ID)

    這篇文章主要介紹了PHP數(shù)字和字符串ID互轉函數(shù),生成的字符串ID類似優(yōu)酷的視頻ID,像一個加密過的數(shù)字ID,本文函數(shù)可以在數(shù)字ID和字符串ID間相互轉換,需要的朋友可以參考下
    2014-06-06
  • 如何解決phpmyadmin導入數(shù)據(jù)庫文件最大限制2048KB

    如何解決phpmyadmin導入數(shù)據(jù)庫文件最大限制2048KB

    這篇文章主要介紹了如何解決phpmyadmin導入數(shù)據(jù)庫文件最大限制2048KB的相關資料,需要的朋友可以參考下
    2015-10-10
  • LAMP環(huán)境使用Composer安裝Laravel的方法

    LAMP環(huán)境使用Composer安裝Laravel的方法

    這篇文章主要介紹了LAMP環(huán)境使用Composer安裝Laravel的方法,簡單分析了Ubuntu服務器環(huán)境下Composer的安裝及使用Composer安裝Laravel的相關命令與使用技巧,需要的朋友可以參考下
    2017-03-03

最新評論

浦东新区| 沙坪坝区| 弥勒县| 北京市| 容城县| 临夏市| 勐海县| 靖远县| 茌平县| 阳曲县| 长宁区| 金湖县| 祁阳县| 香港| 白玉县| 贵州省| 高淳县| 定结县| 河池市| 壤塘县| 长岭县| 玛纳斯县| 鹤山市| 大新县| 乐都县| 三原县| 东乡县| 福建省| 海淀区| 巨野县| 高州市| 北流市| 内丘县| 略阳县| 天津市| 灵宝市| 工布江达县| 阳原县| 旬邑县| 巩留县| 班戈县|