Ankündigung

Einklappen
Keine Ankündigung bisher.

Long Polling

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • String
    hat ein Thema erstellt Long Polling.

    Long Polling

    Ich kam vor ein paar Monaten mal mit Long Polling/ Comet in Kontakt, habe es allerdings nicht verstanden, obwohl ich mir wirklich sehr viele Tutorials durchgelesen habe und Videos geschaut habe. Dann habe ich es aufgegeben und jetzt bin ich wieder darauf angewiesen. Wieder will ich es einfach nicht verstehen!

    Am Beispiel eines Codes, welchen ich von einem Tutorial habe, habe ich mir mal einen kleinen Chat bauen versucht.

    chat.php
    Code:
    	<script type="text/javascript">
    		function checkForNewMessages()
    		{
    		    $.ajax({
    		        type: "GET",
    		        url: "chat2.php",
    		        async: true,
    		        cache: false,
    		        timeout: 300000
    		    }).done(function(result) {
    		        if(result.messageReceived) {
    		            alert("Message received!");
    		        }
    		        else
    		        {
    		        	alert("Message NOT received.");
    		        }
    		        checkForNewMessages();
    		    });
    		};
    
    		checkForNewMessages();
    	</script>
    chat2.php
    PHP-Code:
    <?php
    $db 
    mysqli_connect("localhost""root""123""chat");

    function 
    datenbankAuslesen() {
        
    $getMessages mysqli_query($db"SELECT * FROM messages");
        
    $message mysqli_fetch_assoc($getMessages);
        return 
    $message["message"];
    }

    $message datenbankAuslesen();
    while(!
    $message)
    {
        
    sleep(5);
        
    $message datenbankAuslesen();
        echo 
    $message;
    }
    Das Ergebnis wenn ich chat.php aufrufe ist, dass gar nichts passiert. Um das zu testen, hatte ich die alerts eingefügt, welche so wie ich das Script verstehe auf jeden Fall aufpoppen sollten - einer davon. Ein Alert direkt zu Beginn der Funktion, vor dem AJAX Teil, funktioniert.

  • lstegelitz
    antwortet
    Zitat von String Beitrag anzeigen
    Ok, das hatte wohl gefehlt, aber trotzdem passiert gar nichts.
    Wie gesagt: Debugging...

    Mit "gar nichts" als Ausgangslage können wir dir auch "gar nichts" raten, außer das du selber suchen musst.

    Einen Kommentar schreiben:


  • lottikarotti
    antwortet
    Hallöchen,

    Zitat von String Beitrag anzeigen
    PHP-Code:
    $db mysqli_connect("localhost""root""123""chat"); 

    function 
    datenbankAuslesen() { 
        global 
    $db;
        
    $getMessages mysqli_query($db"SELECT * FROM messages"); 
        
    $message mysqli_fetch_assoc($getMessages); 
        return 
    $message["message"]; 

    Ok, das hatte wohl gefehlt, aber trotzdem passiert gar nichts.
    Ein Hinweis: Abhängigkeiten löst man nicht auf indem man den globalen Namensraum vollmüllt, sondern indem man die notwendigen Paramter in die jeweilige Klasse / Methode / Funktion injiziert:

    PHP-Code:
    function doSomething(DatabaseInterface $db){
        
    $db->fetchSomething();

    PHP-Code:
    class MyClass{
        private 
    $db null;

        public function 
    __construct(DatabaseInterface $db){
            
    $this->db $db;
        }

    Viele Grüße,
    lotti

    Einen Kommentar schreiben:


  • String
    antwortet
    PHP-Code:
    $db mysqli_connect("localhost""root""123""chat"); 

    function 
    datenbankAuslesen() { 
        global 
    $db;
        
    $getMessages mysqli_query($db"SELECT * FROM messages"); 
        
    $message mysqli_fetch_assoc($getMessages); 
        return 
    $message["message"]; 

    Ok, das hatte wohl gefehlt, aber trotzdem passiert gar nichts.

    Einen Kommentar schreiben:


  • lstegelitz
    antwortet
    PHP-Code:
    $db mysqli_connect("localhost""root""123""chat"); 

    function 
    datenbankAuslesen() { 
        
    $getMessages mysqli_query($db"SELECT * FROM messages"); 
        
    $message mysqli_fetch_assoc($getMessages); 
        return 
    $message["message"]; 

    Debuggen!

    $db ist innerhalb der Funktion nicht bekannt...

    Einen Kommentar schreiben:


  • String
    antwortet
    In dem Chat, den ich zwecks Test gemacht habe, werden die Chatnachrichten in der Datenbank gespeichert.

    Einen Kommentar schreiben:


  • lstegelitz
    antwortet
    Fügst du denn auch etwas in die Datenbank ein, während das Script läuft?

    Einen Kommentar schreiben:

Lädt...
X