2017-09-26 43 views
0

我需要在我的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

這不是最好的方法來做到這一點。

你是對的 - 它可能導致交通和負載增加。

更好的選擇是:

  1. Longpooling

  2. Server events

  3. WebSockets

首先儘量考慮socket.io(他們有一些公關與網站oblems - 嘗試繼續下去:-))

相關問題