2017-09-26 4 views
0

私は、私はメッセージコントローラ機能getnewで作成setIntervalは正しい通知方法ですか?

の1-この方法を使用

、yii2によって構築された私のシステム内のメッセージの通知を作成する必要があります。

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

まず第一には、(彼らはいくつかのPRを持っているsocket.ioを検討してみてくださいoblems with website - 後でそれを試してみましょう:-))

関連する問題