Ergebnis 1 bis 9 von 9

Thema: Automatische Zeitaktualisierung?

  1. #1

    Automatische Zeitaktualisierung?

    Also ich bin dabei ein browsergame zu basteln ^^
    Läuft alles sehr gut, hab schon viel geschafft, jedoch fehlt mir eine Kenntnis um es nun zu vollenden!

    Und zwar soll jede 5 Minuten ein bestimmter Wert in eine MySQL-Tabelle eingetragen werden.
    Jetzt weiß ich nur nicht wie das geht.
    Es soll ja schließlich auch funzen wenn kein User online ist.

  2. #2
    Dazu muss der Webspace Anbieter Cronjobs unterstützen.Das muss man sich so wie einen Task-Planer vorstellen der zu einen bestimmten zeitpunkt etwas ausführt.Der meiste Webspace ist sehr teuer mit Cronjobs.Da gibts aber noch Pseudo Cronjobs.Das ist genau das was du suchst: Klick

  3. #3
    Hmm ich müsste dann einen Anbieter nehmen.
    Gibt es denn einen der auch alle 5 Minuten sowas macht und nicht erst jeden Tag?

  4. #4
    Zitat Zitat
    Und zwar soll jede 5 Minuten ein bestimmter Wert in eine MySQL-Tabelle eingetragen werden.
    Jetzt weiß ich nur nicht wie das geht.
    Es soll ja schließlich auch funzen wenn kein User online ist.
    Normalerweise ist das nicht nötig. Wenn kein User online ist, braucht man auch keine aktuellen Daten. Du musst nur eine Datei in jede Datei deiner Seite einbinden, die folgendes macht:
    PHP-Code:
    $zeit 300// Alle x Sekunden aktuallisieren
    $res mysql_query("SELECT `der_wert`, `letzte_aenderung` FROM `tabelle`;");
    $wert mysql_result($res0"der_wert");
    $aenderung mysql_result($res0"letzte_aenderung");
    $wie_oft floor((time() - $aenderung) / $zeit); // wie oft aktuallisieren
    if($wie_oft 0) {
    // hier kannst du jetzt entweder eine Schleife mit $wie_oft machen oder aber eine Rechnung oder sonstwas
    // Z.B.:
      
    mysql_query("UPDATE `tabelle` SET`der_wert` = '".($wert $wie_oft 10)."';");
    // Folgende Zeile ist auf jeden Fall nötig
    // Sie aktuallisiert den Wert der letzten Änderung
      
    mysql_query("UPDATE `tabelle` SET`aenderung` = '".($aenderung $wie_oft $zeit)."';");

    Mit diesem Code erhöhst du den Wert `der_wert` (ist nur auf einen Datensatz ausgelegt) in der Tabelle `tabelle` alle 5 Minuten um den Wert 10. Das tust du aber nicht regelmäßig, sondern nur, wenn jemand die Seite aufruft. Das erspart dir einen Cronjob...

    Ich hoffe du hast das verstanden und es hilft dir weiter...

  5. #5
    Nee das wäre unlogisch.
    Denn wenn jemand ein Gebäude baut und es zB. 5 Stunden baut und er beschließt das über Nacht zu machen, keine Sau ist aber online, bringts das ja nicht wirklich.

    Dann muss ich wohl doch auf nen Cronjob zurückgreifen,.
    Danke

  6. #6
    Dann überprüfst du halt bei nächsten Mal, wenn er sich einloggt, ob das Gebäude fertig ist. Das muss nicht "live" sein. Das ist nicht nötig, weil, wenn niemand die Daten sehen will (zB ob ein Gebäude fertig ist), müssen diese Daten garnicht existieren...

  7. #7
    Zitat Zitat von Manni_the_Dark
    Dann überprüfst du halt bei nächsten Mal, wenn er sich einloggt, ob das Gebäude fertig ist. Das muss nicht "live" sein. Das ist nicht nötig, weil, wenn niemand die Daten sehen will (zB ob ein Gebäude fertig ist), müssen diese Daten garnicht existieren...
    Ich erklärs mal genauer.

    Also, wir haben 0.00 Uhr Serverzeit.
    User A baut sich ein Haus aus Papier, braucht dafür "5 Stunden".

    10 Stunden ruft keiner das Browser Game auf, da irgend ein ultimatives Event auf der Welt die gleichnahmige (die Welt) in Atem hällt.

    Nach 10 Stunden (Haus ist also schon 5 Stunden fertig) geht User XY Online bei Dir im Game.

    Der Server prüft nach:

    Letzte Akutalisierung: 0.00Uhr
    Momentane Uhrzeit: 10Uhr

    User A: Hausbau - Angefangen: 0.00 Uhr Serverzeit
    Vergleich: 10.00 Uhr Serverzeit
    Hausbau braucht 5 Stunden
    -> speichert in MYSQL das das Haus schon 5 Stunden fertig gebaut ist und gibt das auch aus, wenn das Haus aufgerufen wird in irgendeiner Form.

    Wenn "Papier Haus" +3 Blätterkenntnis ergibt pro Stunde, dann rechnet der Server weiter:
    Vor 5 STunden haus gebaut.
    Vergangene Stunden seit letztem MYSQL Speichern: 5 Stunden

    UserA: Bonus für "Papier Haus" = 5*3 Blätterkenntnis
    Speichere: UserA+ 15 Blätterkenntnis

    Hoffe das das einigermasen verständlich its. XD

    Das wäre eine Variante, ist wahrscheinlich aber nicht die Ressourcen schonendste, aber wegen so einen Problem brauchste keinen Cronjob, denn würde ich eher für "Sekunden genaue E-Mail" Versand- Operationen verwenden.

    Dennis

  8. #8
    Hmm naja würde ich das so machen, dann müsste jedoch bei jeder kleinigekeit aktualisiert werden wenn man zB jemanden angreift oderso.
    Ist mir zu kompliziert ^^"
    Ich glaub ich mach den cronjob da.
    Ich habe sowieso unbegrenzten Traffic, da sollte das nicht so schlimm sein.

  9. #9
    Zitat Zitat von Fanatic
    Hmm naja würde ich das so machen, dann müsste jedoch bei jeder kleinigekeit aktualisiert werden wenn man zB jemanden angreift oderso.
    Ist mir zu kompliziert ^^"
    Ich glaub ich mach den cronjob da.
    Ich habe sowieso unbegrenzten Traffic, da sollte das nicht so schlimm sein.
    Cronjob kostet, wenn mehrmals am Tag in der Regel Geld.
    Angenommen der Cronjob fällt mal aus: Dein System ist somit flachgelegt - Häuser werden nie fertig usw. usf..

    Der User selbst kann der Cronjob sein, er aktualisiert die Daten unwissen, meinetwegen alle 60 Sekunden. (if "60 sekunden rum seit letztem update){//update}

    Aber gut, solltets Du so einen guten Cronjob finden, poste mal den Link hierher - Kann den dann nämlich zu dem Webspache/ Domain Thread heften - wäre passend.

    Dennis

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •