涉及抢购、秒杀、抽奖、抢票等活动时,为了不超卖,那么库存数量是有限的,可是若是同时下单人数超过了库存数量,就会致使商品超卖问题。那么咱们怎么来解决这个问题呢?php
<?php header("content-type:text/html;charset=utf-8"); $redis = new redis(); $result = $redis->connect('127.0.0.1', 7379); $redis->watch("mywatchlist"); $len = $redis->hlen("mywatchlist"); $rob_total = 100; //抢购数量 if ($len < $rob_total) { $redis->multi(); $redis->hSet("mywatchlist", "user_id_" . mt_rand(1, 999999), time()); $rob_result = $redis->exec(); file_put_contents("log.txt", $len . PHP_EOL, FILE_APPEND); if ($rob_result) { $mywatchlist = $redis->hGetAll("mywatchlist"); echo '抢购成功' . PHP_EOL; echo '剩余数量:' . ($rob_total - $len - 1) . PHP_EOL; echo '用户列表:' . PHP_EOL; print_r($mywatchlist); exit; } else { exit('手气很差,再抢购!'); } } else { exit('已卖光'); }