Daten erst nach Ablauf eines Countdowns in DB einfügen

Memfis

Erfahrenes Mitglied
Die folgende Frage richtet sich vor allem an Spieler von Browsergames, da ich selber ein Kleines schreiben möchte. Es geht darum, dass ich Daten zeitversetzt in die DB schreiben will. Wenn ich also auf den Link zum ausbauen eines Gebäudes klicke, muss es beispielsweise fünf Minuten dauern, bis die Datenbank die Ausbaustufe aktualisiert, bzw. diese eingetragen wird. Zudem soll ein Countdown ablaufen, wie lange es noch dauern wird, bis die neue Ausbaustufe bereit ist und ein Abbruch muss möglich sein. Zudem darf während des Baus kein anderes Gebäude gebaut werden dürfen.

Das ist ziemlich viel, deswegen wäre ich vorerst damit zufrieden, wenn ich überhaupt wüsste, wie ich Daten zeitversetzt in die DB schreiben kann und den Countdown macht. Leider habe ich nicht den Hauch einer Ahnung, wie ich das bewerkstelligen kann (davon abgesehen, dass man vermutlich "time()" braucht) und wäre daher auf die Hilfe Dritter angewiesen.

Da ich kein Freund komplexer Scripte bin und ich immer so wenig Codezeilen wie möglich schreiben will, bitte ich darum, dass man wenig Codezeilen verwendet und diese klar Kommentiert, damit die einzelnen Schritte nachvollziehbar sind (copy & pase ohne zu verstehen, macht keinen Sinn) Nach Möglichkeit sollte man es mit reinem HTML/PHP lösen und kein Javascript oder Ähnliches verwenden, weil ich Javascript nicht gelernt habe und auch gerne darauf verzichten würde. (Haben viele abgeschaltet und ich persönlich mag es auch nicht wirklich. Außerdem schaffen es die großen Browsergames auch Ohne)

Falls jemand, die für ich komplexe Angelegenheit lösen würde oder einen sehr guten Ansatz liefern kann, wäre ich wirklich dankbar.
 
Zuletzt bearbeitet:
Kurz gesagt: Vergiss es und wende Dich Java zu...
Ein "zeitversetzt" gibt es in PHP nicht, da es sich dabei um einen serverseitigen Preprocessor handelt, der Daten verarbeitet und an den User weitergibt. Es gibt nie eine Verbindung zwischen User und "Compiler". Der bekommt nicht mit, was ein User im Browser gerade macht.

Entwickler behelfen sich da normalerweise Javascript, um komplexere Interaktionen zwischen User-Browser und Server zu tracen (Bzw. Post & Get für simplen Datenaustausch). Aber auch JS ist ein (allen bekanntes) leidiges Thema (Stichwort: Browserkompatiblität).

Wenn Du wirklich Games schreiben willst, mach es mit Java resp. Java Applets oder verwende eigens angepasste Entwicklungsumgebungen (zb Shockwave). Für "lokale" Games würde ich sowieso C++ empfehlen.

Nimm Dir den Tipp zu Herzen,
LG
Mike
 
Aber als kleines Workaround faellt mir ein: Kannst du die information nicht direkt in die Datenbank einschreiben, und sie mit einem Zeitstempel versehen, der dir in den naechsten fuenf Minuten noch alles das erlaubt, was du mit der Information machen willst?
 
Wäre nicht wirklich eine Möglichkeit, außer Du arbeitest mit Cronjobs.
Denn was passiert, wenn der User zb nach einer Minute den Browser schließt?
 
Was mir jetzt einfallen würde, wäre Folgendes:

Wenn jemand ein Haus baut, schreibst du das sofort in deine Tabelle. In dieser solltest du dann noch eine Spalte (nennen wir sie "Fertigstellungszeit") einfügen, die angibt, wann das Haus fertiggebaut ist. Also z.B. time() + 60 * 5 für "nach fünf Minuten".
Wird jetzt versucht ein neues Haus (oder was auch immer) zu bauen, schaust du erst nach, ob alle Fertigstellungszeiten in der Vergangenheit liegen. Wenn nicht, dann darf er halt noch nichts bauen.
Bei Bauabbruch löscht du einfach wieder den entsprechenden Datensatz.

Für den visuellen Timer musst du allerdings zu Javascript greifen, da PHP, wie bereits gesagt wurde, eine serverseitige Skriptsprache ist.
 
Also ich weis, dass es Ogame zum Beispiel ohne Java hinbekommen hat. Ich habe auch mal von der Möglichkeit gehört, dass man das ganze über eine Art Taskplaner machen kann. Was damit aber genau gemeint war, müsste ich mich nochmal kundig machen. Nur bieten die Serveranbieter das Programm / Tool, das man dazu braucht nicht an, da es in gewisser Hinsicht wohl auch ein Sicherheitsrisko oder what ever darstellt. Jedenfalls ist das wohl nicht ganz ohne ein gewisses Risko behaftet.
 
Zuletzt bearbeitet:
Stimmt, das würde gehen.. Allerdings landest Du unterm Strich wieder beim Javascript... Hat es nun jemand im Browser deaktiviert, wird das Haus wahrscheinlich nicht fertig :)
 
Wie schon gesagt: Natürlich kannst Du Games auch rein webbasierend schreiben. Ist aber mörder-kompliziert (mal noch gar nicht die GUI eingerechnet) und außerdem wirst Du es nie wasserdicht hinbekommen...

Und dann gibt es eben Dinge wie Cronjobs, die Du bei den meisten Anbietern nicht selbst konfigurieren kannst...
 
Danke schonmal für die zahlreichen Antworten.

Jörg Rißmann hat gesagt.:
Ohje, jetzt wird es noch komplizierter. Wie arbeitet man den mit diesem Tool? Gibts da irgendwelche Tutorials zu? Bei Wikipedia wird nur das Grundprinzip erklärt, aber nicht, wie ich das Programm "ansprechen" kann. Gibt es sowas auch für Windows? Zum Üben wäre es etwas viel gleich Linux aufzusetzen. Das ich auch immer gleich so hoch greifen muss ... naja, nur so lernt man es schließlich ...

Wenn es wirklich mal zu einem fertigen Browsergame schaffe, muss notfalls halt ein eigener Server her - man gönnt sich ja sonnst nichts :-)
 
Zurück