微信公众号 拼团到期人数不足 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);
        }
    }
原文地址:https://www.cnblogs.com/rsapaper/p/6564852.html