2017-09-26 1 views
0

Ich brauche eine Nachrichten-Benachrichtigungen in meinem System von yii2 gebaut erstellen,setInterval ist der richtige Weg, um Benachrichtigungen zu erhalten?

so habe ich diese Art und Weise

1- i in Nachrichten Reglerfunktion GETNEW erstellt:

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- i erstellt eine js-Datei:

window.onload = function() { 

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

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

3- i hinzugefügt HTML-Tag wie folgt aus:

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

alles funktioniert gut, aber meine Frage ist das richtige Weg, es zu tun? , wird das mehr Verkehr und Last auf meinem Server hinzufügen? Wenn es eine bessere Idee gibt, benachrichtige mich bitte!

+1

Entdecken Sie socket.io. Es wird verwendet, um Echtzeit-Daten-Streaming-Art von Anwendung zu erstellen, die auch Benachrichtigungssysteme enthalten –

Antwort

1

Es ist nicht der beste Weg, dies zu tun.

Sie haben Recht - es könnte Verkehr und Belastung erhöhen.

bessere Optionen sind:

  1. Longpooling

  2. Server events

  3. WebSockets

Zunächst einmal versuchen socket.io zu betrachten (sie einige pr haben Probleme mit der Website - versuchen Sie es später zu tun :-))

Verwandte Themen