setInterval是获取通知的正确方法吗?

问题描述:

我需要在我的yii2内置系统创建一个邮件通知,setInterval是获取通知的正确方法吗?

所以我用这种方式

1 - 我在消息控制器功能GETNEW创建:

public function actionGetnew() 
{ 
    $query1 = new Query;        
     $query1->select([" count(*) as price "] ) 
       ->from('messeges'); 
       //->where // here i will add the id of user that logged in and the state of unread messages ! 
    $command1 = $query1->createCommand(); 
    $price = $command1->queryAll(); 
    echo Json::encode($price); 
} 

2 - 我创建JS文件:

window.onload = function() { 

    setInterval(function(){ 
    $.get('index.php?r=messeges/getnew',function(data) 
    { 
     var data=$.parseJSON(data); 

     $(".messages").html(data[0].price); 
    }); 
}, 5000); 
}; 

3-我加入HTML标签这样的:

<h6 class="messages"></h6> 

一切工作正常,但我的问题是正确的方式来做到这一点? ,是否会在我的服务器上添加更多流量和负载?如果有更好的想法,请通知我!

+1

探索socket.io。它用于构建实时数据流应用程序,其中还包括通知系统 –

这不是最好的方法来做到这一点。

你是对的 - 它可能导致交通和负载增加。

更好的选择是:

  1. Longpooling

  2. Server events

  3. WebSockets

首先尽量考虑socket.io(他们有一些公关与网站oblems - 尝试继续下去:-))