想做一个购物网站,想要在有人购买商品的时候提示“有人购买了你的商品”这样的消息,但是怎么侦听数据库的变化呢?如果定时查询数据库应该很占资源吧?(1次/1s)。谢谢大家了

解决方案 »

  1.   

    当然可以!只要你的环境支持:
    sql server + websocket
      

  2.   

    其实像你这种真的只要有动作就可以了的,比如说购买商品的时候,那个人总得按个按钮吧?按了按钮就是动作,你写入数据之后,数据库的操作总会返回操作成功的的吧?这样不就可以接收了嘛?
    版主大大说的winsocket其实不太合适用在这里的,没必要
      

  3.   

    我明白楼主意思,他意思是当前台有人下单的时候后台人员能立马获取到下单信息,而不是刷新才看到。
    我目前有以下几个办法,
    1,写个邮件发送,当有客户人下单的时候在插入数据的时候把邮件发送到管理员邮件里,最好是QQ邮件,因为QQ能提醒,呵呵。这样当有人下单的时候就立即知道了,当然也可以用短信(但是要钱,而且还有延时)。
    2,利用JS setInterval 每隔3秒就查看一下数据库是否有变化,如果有的话你可以做个QQ或旺旺的提示音来提示后台人员有新订单啦,我就是这样做的。
    贴下我的代码:
    var int=setInterval("clock()",20000);
    function clock(){
      $("#call_div").html('<li>正在刷新屏幕</li>');
      var url = "extend/new_dd.php?cache="+Math.random();
      $.get(url,function(result){
    $("#call_div").html(result);
      });
    }
    3,也是利用JS setInterval 但不是查询数据库,而且当有客户人下单,在插入数据的时候改变$_SESSION[odrer_state]里面内容为1,然后就是利用JS setInterval每隔3秒获取内容,如果为1的话就提未后台人员有订单了,如果后台有员看到了要点下处理再把$_SESSION[odrer_state]内容变为0。这样好处是不会因为过多查询而消耗数据库资源。其实方法很多,要看你怎么用最合适。附上我网站这个功能的载图
      

  4.   

    不停的js请求,每隔10s。客户端js操作。
      

  5.   

    ajax请求数据库变化,动态提示。和聊天室原理一样,定时请求,有数据就添加,没有就继续请求。