Datenbank jede Sekunde aktualisieren ?

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

  • Datenbank jede Sekunde aktualisieren ?

    Hallo zusammen,

    ich habe ein großes Problem. Ich habe ein JavaScript, was eine Datei von mir jede Sekunde aktualisiert, wobei in dieser Datei ein Datenbankeintrag gemacht wird. Das funktioniert super:

    Code:
    <script type="text/javascript" language="javascript">window.setInterval("javascript:resourcesupdate() ",1000);</script>
    Code:
    <div class="resourceBox"  id="boxResMetal" onclick="window.location.href='/resourceInfo.php?show=storages';"><span id="update">...</span></div>
    Code:
    <script src="[U]nachladen.js[/U]" type="text/javascript"></script>
    nachladen.js
    Code:
    function resourcesupdate() {
        new Ajax.Updater("update", "testmitdatei.php");
    }
    Problem an der ganzen Sache ist, dass man den Code im Quelltext sehen kann. Sobald ein user diese Datei aufrufen würde, und immer F5 drückt wird die Zahl immer mehr hochgepusht.

    Gibt es eine möglichkeit den Code so zu schreiben, dass man nicht den Namen der Datei sehen kann, bzw. ein Script, der einen Datenbankeintrag macht, den User nicht sehen können ?

    Ich stehe gerade ein bisschen auf dem Schlauch und wüsste nicht wie ich das realisieren könnte.

    Vielen Dank und LG

    TheMan

  • #2
    Welche Adresse du vom Client aufrufen lässt, lässt sich immer in Erfahrung bringen.

    Du könntest in so einem Fall höchstens vom Server ein Token generieren lassen, mit dem jeweils nur ein Eintrag möglich ist - für den Nächsten braucht es dann wieder ein neues Token, usw. usf.

    Dass Requests in dieser Frequenz nicht besonders gut für die Performance sind, insb. wenn die Nutzerbasis mal breiter wird, muss hoffentlich nicht noch extra erwähnt werden.

    Was du eigentlich damit erreichen willst, könntest du auch mal beschreiben.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Hi,

      also der Datenbankeintrag sieht so aus, dass dort pro Sekunde ein Eintrag mit z.B. +4 ist. Die Zahl wird pro Sekunde also immer erhöht.

      Ruft der User aber die Datei selbst und drückt F5 zum aktualisieren, so kann man die Datenbank manipulieren. Das soll aber ausgeschlossen werden.

      In dieser Datenbank werden die Einträge direkt für z.B. 10 User gemacht. Heißt also 10 Einträge / Sekunde. Das hält eine Datenbank ja aus. Was passiert, wenn es dann bis zu 10000 sind, weiß ich nicht. ( Habe einen Root Server)

      Bei mir geht es um ein Browsergame, wo der User pro Sekunde Ressourcen bekommt, bis zu einem maximum von bsp. 10.000 Rohstoffen.

      Daher soll ja auch die Datenbank immer aktualisiert werden und die aktuelle Zahl ausgegeben werden.

      Kann man sowas nicht auch mit Ajax machen ? Es geht sich eigentlich nur darum, dass man das eintragen der Zahlen nicht beeinflussen kann (als User)....

      Vielleicht kennt ja einer ein Lösungsweg um es so einfach wie möglich zu machen, sodass der Server auch nicht ganz ausgelastet wird.

      Danke =)

      Kommentar


      • #4
        Deamon/CronJob Prozess zur Rohstoffverwaltung?

        JS übernimmt nur die Anzeige. und die Übertragung von Veränderungen.
        Bitte Beachten.
        Foren-Regeln
        Danke

        Kommentar


        • #5
          Das ist eigentlich eine gute Idee =) Daran hab ich garnicht gedacht es so zu machen. Danke.... werd ich gleich mal ausprobieren.

          Nur noch eine kleine Frage. Wie lese ich dann den Datenbankeintrag jede Sekunde aus und lasse Ihn dann anzeigen ?

          Sodass dann auch nicht, nach einem aktualisieren der Seite die "..." erst stehen und nach einer Sekunde dann erst die Zahl. Sondern, nach dem aufrufen der Seite die Zahl direkt angezeigt wird ?

          Bei fast allen Browsergames wird die Zahl sofort angezeigt.

          Danke dir nochmal für den "Denk"anstoß =)

          Kommentar


          • #6
            Wozu willst du jede Sekunde die Datenbank auslesen? Die Datenbank musst du nur dann lesen/beschreiben, wenn der Benutzer aktiv etwas macht. Denn nur dann ändert sich was.

            Für irgendwelche Zähler, die im Client mitlaufen, kannst du JavaScript verwenden. Aber dafür brauchst du keine Datenbank.

            Kommentar


            • #7
              Die Daten müssen doch irgendwo gespeichert werden ?! Und dafür nutze ich die Datenbank.

              Der User bekommt jede Sekunde 4 Punkte dazu. Und das muss doch gespeichert werden....

              Kommentar


              • #8
                einfacher geht es nun wirklich nicht.
                Js ajax anfrage an eine z.b. php Datei die nichts anderes tut als mit dem Usertocken die Datenbank nach bestimmten Feldern zu fragen obwohl jede Sekunde auch ziemlicher Müll ist.

                Z.b. Rohstoffe xyz werden zum Bau benötigt um diese Rohstoffe anzusammeln braucht es eine c zeit sagen wir 60 Sekunden oder 15 Sekunden. in der Zeit hat der Deamon schon den vermerk gemacht x Rohstoffe angesammelt.
                Das Skript führt dann den Auftrag nach 60 Sekunden aus. alternative
                du lässt 2 Skirpte laufen. eins das auf dem Client die Ansammlung Simuliert und die Daten alle 60 Sekunden mit den echt Daten in der DB abgleicht und falls eine Differenz auftaucht diese dann am Client updatet.

                es währe sowieso besser auch für die Performance des Ressourcen Management diese auf 60 Sekunden oder mehr hoch zu setzen also anstelle von 1 Sekunde 4 Rohstoffe.

                zur frage.

                die Daten Direkt bei der Generierung laden? also den aktuellen Startwert.

                Btw. kann man sich dieses BG irgendwo ansehen?
                Bitte Beachten.
                Foren-Regeln
                Danke

                Kommentar


                • #9
                  Zitat von TheMan1990 Beitrag anzeigen
                  Die Daten müssen doch irgendwo gespeichert werden ?! Und dafür nutze ich die Datenbank.

                  Der User bekommt jede Sekunde 4 Punkte dazu. Und das muss doch gespeichert werden....
                  Nein, muss nicht. Das kannst du dann berechnen und speichern, wenn der Benutzer aktiv etwas macht. Denn nur dann ist es relevant. Welche Werte zwischen den Aktionen in der Datenbank stehen ist irrelevant, weil die der Benutzer nicht sieht.

                  Wie gesagt, für Echtzeitanzeige gibt es JavaScript.

                  Kommentar


                  • #10
                    Zitat von h3ll Beitrag anzeigen
                    Nein, muss nicht. Das kannst du dann berechnen und speichern, wenn der Benutzer aktiv etwas macht. Denn nur dann ist es relevant. Welche Werte zwischen den Aktionen in der Datenbank stehen ist irrelevant, weil die der Benutzer nicht sieht.
                    Hi,

                    nur wie soll das funktionieren, bzw. kannst du mir ein Condebeispiel zeigen, wie ich das realisieren kann ?

                    Der Ansatz reicht ja schon, nur ich kann mir im Mom nicht vorstellen, wie das funktionieren soll.

                    Kommentar


                    • #11
                      @Wyveres

                      Wie gerade schon geschrieben, weiß ich nicht wirklich, bzw. den Ansatz davon, wie ich das realisieren kann.

                      Kommentar


                      • #12
                        Zitat von TheMan1990 Beitrag anzeigen
                        Hi,

                        nur wie soll das funktionieren, bzw. kannst du mir ein Condebeispiel zeigen, wie ich das realisieren kann ?

                        Der Ansatz reicht ja schon, nur ich kann mir im Mom nicht vorstellen, wie das funktionieren soll.
                        Du speicherst den Zeitpunkt, an dem der Wert zuletzt verändert wurde. Aus der Differenz zwischen aktuellem und gespeicherten Zeitpunkt kannst du dann ausrechnen, wieviel du addieren musst.

                        Also angenommen ein Wert wird pro Sekunde um 4 Punkte erhöht. Der letzte Zugriff war vor 3 Minuten, dann musst du 3 * 60 * 4 Punkte addieren um den aktuellen Wert zu erhalten.

                        Kommentar


                        • #13
                          Danke schonmal dafür....

                          Und bei genau welcher Aktion soll dann das Script ausgeführt werden ? Und es muss ja immer aktuell zu sehen sein (live) wie viele Punkte derjenige hat.

                          Die Punktzahl soll ja jede Sekunde aktuell bleiben.

                          Kommentar


                          • #14
                            Zitat von TheMan1990 Beitrag anzeigen
                            Und bei genau welcher Aktion soll dann das Script ausgeführt werden ?
                            Jedesmal, wenn der Wert abgefragt wird. Also zB. wenn der Benutzer auf irgendwas klickt und dadurch die Seite neu geladen wird.

                            Zitat von TheMan1990 Beitrag anzeigen
                            Und es muss ja immer aktuell zu sehen sein (live) wie viele Punkte derjenige hat.
                            Dafür kannst du JavaScript verwenden.

                            Zitat von TheMan1990 Beitrag anzeigen
                            Die Punktzahl soll ja jede Sekunde aktuell bleiben.
                            Ja, für den Benutzer. Aber dem Server und in Folge der Datenbank kann das egal sein.

                            Kommentar


                            • #15
                              Naja die Seite wird andauernd neu geladen. Wenn man überall hin und her klickt, muss das script immer ausgeführt werden. Und dann der Wert geändert werden....

                              Ich werde das mal irgendwie ausprobieren... Hab zwar noch keine Ahnung wie ich das ins Script einbauen werde, aber ich versuch es mal ^^

                              Kommentar

                              Lädt...
                              X