常規的秒殺處理邏輯(php)

2022-02-22 03:32:11 字數 1110 閱讀 6034

1

## 初始化搶購資料

2<?php34

//假設當前秒殺活動的 id 為 9

5// 可以在模型的 created 事件做這個事情

6$id = 9;78

//填充乙個 redis 佇列,數量為搶購的數量,後面的 9 無意義

9 \redis::lpush("seckills::queue", array_fill(0, $seckill->number, 9));

1011 ?>

1213

## 搶購

14<?php

1516

//從路由或者引數中得到當前秒殺活動的 id

17$id = 9;

18$userid = auth()->id();

1920

//判斷是否已經開始了秒殺

2122

// 返回 0,代表當前使用者已經搶購過了

23if (0 == redis::hset("seckills::users:", 'id', $userid

)) 27

28//

如果從佇列中讀取到了 null,代表已經沒有庫存

29if (is_null(redis::lpop("seckills::queue")))

3334

//這裡就可以開始入庫訂單

3536 ?>

3738

## 利用 crontab 定時掃瞄過期資料,回滾庫存,刪除過期 redis (可選)

39<?php

4041

//查出已經過期確沒有回滾過的秒殺,

42 seckill::query()

43 ->where('end_at', '<', date('y-m-d h:i:s'))

44 ->get()

45 ->map(function (seckill $seckill

) :*");

49 redis::del($ids

);50

51//

回滾庫存

52// 做更多的事

53};

5455 ?>

php搶購秒殺邏輯

1 3 搶購的處理邏輯4 56include init.php 78 template type buy 9 template pagetitle 搶購 1011 active model new model active 12 goods model new model goods 1314 引數...

對數字的常規處理

在c語言的學習中,對數字的處理尤為重要。其中有以下幾種常規處理數字的方法 1 統計數字的位數 2.順序輸出每一位數字 3 逆序輸出每一位數字 接下來我們可以根據這個例子,來理解c語言對整形數字的處理流程 給出乙個不多於5位的正整數,要求 1 求出它是幾位數 2 分別輸出每一位數字 3 按逆序輸出各位...

秒殺系統(四) 異常處理和常量的處理

1 建立三個異常類,分別繼承runtimeexception 執行時異常 為什麼繼承執行時異常?在spring事務中,預設當方法丟擲執行時異常才會進行事務回滾。簡述spring事務 spring並不直接支援事務管理,而是通過一系列的事務管理器來操作事務。spring事務機制主要包括宣告式事務和程式設...