微信公众号 拼团到期人数不足 db触发器 js触发器 剥离

时间:2023-07-25 15:40:32

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);
}
}