微信公众号 拼团到期人数不足 db触发器 js触发器 剥离
w注意当页面多个先后到期或同时到期的团时的用户体验
w保证了每次加载这个页面会是的过期的团不显示,马上到期的团会在页面存活期间进行页面更新和db操作;
但是这依赖了团状态值的更新必须依赖于有客户端页面的存在,如果系统其他地方也需要这个团状态值呢?每处都进行
判定和更新的操作,加重服务器、db负载??
应该把更新团状态值的操作,剥离出来,前端页面在首次展示时进行团状态值过滤,同时添加js重新加载页面的触发器
客户端,js发起更新请求
if (leftTime <= 1) { $.post("gb_udp_due", {gcid: id}); var url = 'gbone?id=' + gid + '&cid=' + cid + '&' window.location = url }
服务端,考虑到并发,先判定是否已更新或拼团成功
function gb_udp_due() { $gcid = $_REQUEST['gcid']; $this->load->model('item_test'); $this->load->model('item_test'); $wcheck = $this->item_test->gb_selling_status($gcid); //考虑并发,避免其他客户端已经拼团成功或者已经执行判定失败动作 if ($wcheck == 1) { $sql = 'UPDATE gbuy_create SET selling=2 WHERE id = ' . $gcid; $this->db->simple_query($sql); } }