kostenloser Webspace werbefrei: lima-city


Seite bei Änderung in Datenbank aktualisieren

lima-cityForumDie eigene HomepageHTML, CSS & Javascript

  1. Autor dieses Themas

    soulworld

    soulworld hat kostenlosen Webspace.

    Huhu,
    Mein seite muss sich ca. jede Sekunde aktulisieren bisher habe ich es immer so gemacht:
    <div id="shoutcastdiv">
    
    [Der Skript.....]
    
    <a name="bancor"></a>
    <a name="bancor2"></a>        
    
    </body>
    
    </div>
    
    
    
    <script type="text/javascript" language="javascript">
    
        var http_request = false;
    
        function macheRequest(url) {
    
            http_request = false;
    
            if (window.XMLHttpRequest) { // Mozilla, Safari,...
                http_request = new XMLHttpRequest();
                if (http_request.overrideMimeType) {
                    http_request.overrideMimeType('text/xml');
                    // zu dieser Zeile siehe weiter unten
                }
            } else if (window.ActiveXObject) { // IE
                try {
                    http_request = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (e) {
                    try {
                        http_request = new ActiveXObject("Microsoft.XMLHTTP");
                    } catch (e) {}
                }
            }
    
            if (!http_request) {
                alert('Ende :( Kann keine XMLHTTP-Instanz erzeugen');
                return false;
            }
            http_request.onreadystatechange = alertInhalt;
            http_request.open('GET', url, true);
            http_request.send(null);
    
        }
    
        function alertInhalt() {
    
            if (http_request.readyState == 4) {
                  //  alert(http_request.responseText);
    
    document.getElementById("shoutcastdiv").innerHTML = http_request.responseText;
    
            }
    
        }
    
    iv = setInterval("macheRequest('???.php')",1800);
    
    </script>
    </html>


    Doch leider verursacht das sehr viel anfragen deshalb möchte das die seite nur aktulisiert wen sich was in der DB wirklich verändert hat wie kan ich das realisieren? :(

    Beitrag zuletzt geändert: 9.2.2010 21:55:05 von soulworld
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. christian1603

    Kostenloser Webspace von christian1603

    christian1603 hat kostenlosen Webspace.

    soulworld schrieb: Huhu,
    Mein seite muss sich ca. jede Sekunde aktulisieren bisher habe ich es immer so gemacht:
    <div id="shoutcastdiv">
    
    [Der Skript.....]
    
    <a name="bancor"></a>
    <a name="bancor2"></a>        
    
    </body>
    
    </div>
    
    
    
    <script type="text/javascript" language="javascript">
    
        var http_request = false;
    
        function macheRequest(url) {
    
            http_request = false;
    
            if (window.XMLHttpRequest) { // Mozilla, Safari,...
                http_request = new XMLHttpRequest();
                if (http_request.overrideMimeType) {
                    http_request.overrideMimeType('text/xml');
                    // zu dieser Zeile siehe weiter unten
                }
            } else if (window.ActiveXObject) { // IE
                try {
                    http_request = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (e) {
                    try {
                        http_request = new ActiveXObject("Microsoft.XMLHTTP");
                    } catch (e) {}
                }
            }
    
            if (!http_request) {
                alert('Ende :( Kann keine XMLHTTP-Instanz erzeugen');
                return false;
            }
            http_request.onreadystatechange = alertInhalt;
            http_request.open('GET', url, true);
            http_request.send(null);
    
        }
    
        function alertInhalt() {
    
            if (http_request.readyState == 4) {
                  //  alert(http_request.responseText);
    
    document.getElementById("shoutcastdiv").innerHTML = http_request.responseText;
    
            }
    
        }
    
    iv = setInterval("macheRequest('???.php')",1800);
    
    </script>
    </html>


    Doch leider verursacht das sehr viel anfragen deshalb möchte das die seite nur aktulisiert wen sich was in der DB wirklich verändert hat wie kan ich das realisieren? :(

    Das ist Nicht möglich und jede sec ist wirklich ein bissel viel. Schau dir Mal AJAX an. vieleicht kann dir da ja jemand helfen.
    Ich selber bin mit AJAX nicht weit gekommen.....
    LG
    Christian

    Beitrag zuletzt geändert: 9.2.2010 22:50:29 von christian1603
  4. soulworld schrieb:

    Doch leider verursacht das sehr viel anfragen deshalb möchte das die seite nur aktualisiert wen sich was in der DB wirklich verändert hat wie kan ich das realisieren? :(


    Ähm christian1603 das ist ajax , oder habe ICH da was falsch verstanden?
    Meines wissens muss der Client eine anfrage stellen. Es ist nicht möglich das der Server mit dem Clienten von sich aus Kontakt aufnimmt.
    Das einzige was Du machen kannst ist das Datenvolumen zu verkleinern.
    Also meine Ideen dazu:
    1) Feststellen ob der User noch Aktiv ist (Mausbewegung, Tastaturabfrage, hat die Seite noch den Focus?) und wenn nicht nach Z.B. 5 Minuten nicht mehr abfragen und einen Hinweis rausgeben.
    2)Du könntest erst eine abfrage machen ob sich was verändert hat . Also Timestamp schicken von der letzten Aktualisierung, der Server schickt dann 0= für nichts neues 1=für es hat sich was verändert (+Den neuen Text)

    Aber ich glaube am elegantesten wäre es wenn Du nur alle 3 Minuten abfragst, dazu eine Animation machst (Shoutbox aktualisiert sich in xx Sekunden neu) und gleichzeitig Manuelles Aktualisieren anbietest.

    Sind jetzt nur Ideen von mir.
  5. die-superfreunde

    die-superfreunde hat kostenlosen Webspace.

    Hab da vor ein paar Minuten was zu gepostet:
    http://www.lima-city.de/thread/ajax-datenbank-alle-10-sec-abfragen-und-ergebnis-ausgeben

    Schau zu dem prototype am besten noch mal in die Doku. Da gabs auch was mit depletion -> Fängt etwa mit 2sec an und mit jeder Abfrage wird die Zeitspanne um einen festen Faktor vergrößert. Müsste reichen.

    Bei get_state kannst du ja einen Vergleich machen (result = "1" oder so). Der Phantasie sind keine Grenzen gesetzt ;)

    PS: 1sec ist SEHR extrem. Mit ner langsamen Verbindung löst du damit nen reload aus, bevor sich die Seite aufgebaut hat :?

    MfG

    Beitrag zuletzt geändert: 10.2.2010 14:00:10 von die-superfreunde
  6. PS: 1sec ist SEHR extrem. Mit ner langsamen Verbindung löst du damit nen reload aus, bevor sich die Seite aufgebaut hat :?

    Denk ich auch. Es könnte schon 1 sek. dauern bis der Server die Antwort sendet. Nicht mal Ajax Seiten wie Gmail haben so eine hohe Aktuallisierungsrate.
  7. Autor dieses Themas

    soulworld

    soulworld hat kostenlosen Webspace.

    Mhm eine genaue Antwort habe ich noch nicht deshalb beschreibe ich mein problem genauer: In meinem game was ich programmiere kan man Monster angreifen und kriegt dan geld Wieviel geld man immer hat sieht man im itemFrame das ItemFrame aktulisiert sich jede Sekunde um immer auf den neusten Standt zu sein wieviel geld man hat wen man nun die Seite nur alle 2 min aktuliseren würde könnte man es nicht genau verfolgen. Es gibt viele games von der Art: z.b. http://www.freewar.de/ und da gibt es nur eine Anfrage wen sich wirklich was im itemFrame verändert hat das heißt also das sowas möglich ist^^ Und meine Frage ist nun weiß einer wie sowas realisierbar ist?^^
  8. Erstmal einige Sachen zu deiner Implementierung oder eher, wie ich es machen würde:
    1. setTimeout rekusriv aufrufen, statt setInterval. Damit hast beginnt kein neuer Request bevor der alte nicht fertig ist.
    2. Nur das aktuelle Geld übergeben und über JS DOM Methoden setzen. Ganzen HTML Code zu übergeben ist unnötig und langsam

    Was du willst, nennt sich Comet. Dafür hat man im Laufe der Zeit viele verschiedene Sachen erfunden. Für dich das einfachste wäre die Methode "Long Polling". Ich rate aber dringend davon ab, wenn du nicht genau weißt, wie man die Anzahl offener Verbinungen auf unbegrenzt setzen kann.
  9. Autor dieses Themas

    soulworld

    soulworld hat kostenlosen Webspace.

    Und was soll ich jetzt amchen?^^ Denn die die Art auf der ioch es jetzt amche ist ja ziemlich Tarffic raubend
  10. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!