国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

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

2024-05-05 00:10:33
字體:
來源:轉載
供稿:網(wǎng)友

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

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

起源于一個需求:將30分鐘內(nèi)未支付的訂單過期處理成已失效狀態(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 分值,存儲部分是這樣的,簡單 + 占用空間內(nèi)存極小。 讀取部分: 在 swoole 啟動時,設置定時器,每分鐘去 orders set 中讀取設置的時間之前的數(shù)據(jù),個人為了測試方便,設置的讀取前一分鐘到前三十分鐘內(nèi)的數(shù)據(jù)。獲取到數(shù)據(jù)之后,根據(jù)業(yè)務邏輯處理數(shù)據(jù),然后 zrem orders orderid 命令從集合中移除對應的 orderid。 個人以為這個方案是內(nèi)存占用和效率兼具的一個方案。 代碼如下:

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ù),效果如下圖:

swoole,定時器,訂單

延伸閱讀:

1.swoole_timer_tick 文檔

2.laravel china上的相關文章

總結

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


注:相關教程知識閱讀請移步到PHP教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 固安县| 宁都县| 芦山县| 朝阳县| 兴山县| 南宫市| 温州市| 彭州市| 沈阳市| 三亚市| 牟定县| 廊坊市| 宝清县| 香河县| 平遥县| 平安县| 凤冈县| 西昌市| 横山县| 永登县| 吉安县| 二手房| 宜宾县| 乌审旗| 湘潭县| 伊金霍洛旗| 永泰县| 泾川县| 松原市| 海城市| 凤台县| 武汉市| 嘉鱼县| 庄河市| 平定县| 固原市| 杭锦旗| 枞阳县| 安乡县| 那坡县| 周至县|