Crownjobs

hallo,

ich bin immernoch am Browsergame entwickeln. Ich habe es geschafft das wenn man auf bauen klickt einen Countdown startet und bei Ablauf das gebäude eine Stufe auflevelt. Aber wenn ich den Browser verlasse dann Tickt ja der Countdown nicht weiter. Aber auch wenn man nicht auf dieser Seite ist soll der Countdown ablaufen. Ich habe gelesen das man das mit Cronjobs erledigen kann. Mein Problem ist das mein Hoster keine Cronjobs unterstützt. meine Frage ist nun:

Gibt es noch eine andere Alternative als Cronjobs?

ich bin wirklich für jede Hilfe dankbar.

Ja es gibt auch andere möglichkeiten man braucht dazu keinen Cronjob. Das ganze ist eine einfach Mathematische Rechnung

Mfg Splasch

ach ja das hat mir aber viel geholfen :?

ja und wie?

Komm das ist doch net so schwer.Wie willst den rest des Browsergame programmieren wenn du schon an so einfachen sachen scheiterst?

Du machst folgendes:

User klickt auf Bau beginn. Dann speicherst du in der Datenbank den Endzeitpunkt ab wann der Bau beendet ist.

Damit kannst du dann später Rechnen. Wenn nun der User auf die Bau Seite klickt. Vergleichst du die Aktuelle Zeit und Datum mit dem Gespeicherten End Datum/Zeit. Die daraus ergebene Differenz ist die Zeit die noch benötig wird zur fertigstellung. Somit läuft der Contdown sekunden genau.

Ist bereits das End Datum/Zeit überschritten worden so speicherst du den höhren Level und berechnest wieviel Zeit vergangen ist zwischen Aktuellen und dem gespeicherten End Datum. Daraus kannst du wieder errechnen wieviel Resorcen mehr er für den Zeitraum bekommen hat.

Daher ist es nix anderes als eine reine Mathimatische berechnung und Aktualisierung der Daten in der Datenbank.

Vorteil an der ganzen Sache der Server wird weit aus weniger Belastet als wenn man einen Cronjob verwenden würde. Zudem ist die Berechnung zuverlässiger und genauer als wenn man das über einen Cronjob laufen lassen würde.

Weitere Vorteile:
.)Weniger fehler anfälliger
.)Keine Ausfallzeiten im Game (bei Cronjobs: Server können ausfallen oder überlastet sein und es findet keine Aktualisierung statt oder ein verspäterte Aktualisierung statt)
.)Mehr Performenc, bzw. mehre Spieler wird das Game tragen können
.)Es kommt zu keinen kurzfristigen Staus bzw überlastungen des Servers da nicht für alle Spieler zum gleichen Zeitpunkt die Berechnung statt finden muß

Du siehst es gibt für so einfache Aufgaben gar keinen Grund einen Cronjob zu verwenden. Das machen nur viele Anfänger weil sie einfach keine andere Lösung dafür finden.

Cronjobs sollte man nur dann verwenden wenn man Serverlastige Operationen ausführen möchte wenn vorausgesehen sich der Server mehr oder weniger in einer Leerlauf fase befindet bzw wenig belastet wird. Diesen Zeitraum kann man dann anhang einer Statistik ermitteln.

Mfg Splasch

danke viel mal jetzt verstehe ich es werde es mal versuchen.

Du machst folgendes:

User klickt auf Bau beginn. Dann speicherst du in der Datenbank den Endzeitpunkt ab wann der Bau beendet ist.

Damit kannst du dann später Rechnen. Wenn nun der User auf die Bau Seite klickt. Vergleichst du die Aktuelle Zeit und Datum mit dem Gespeicherten End Datum/Zeit. Die daraus ergebene Differenz ist die Zeit die noch benötig wird zur fertigstellung. Somit läuft der Contdown sekunden genau.

Ist bereits das End Datum/Zeit überschritten worden so speicherst du den höhren Level und berechnest wieviel Zeit vergangen ist zwischen Aktuellen und dem gespeicherten End Datum. Daraus kannst du wieder errechnen wieviel Resorcen mehr er für den Zeitraum bekommen hat.

Daher ist es nix anderes als eine reine Mathimatische berechnung und Aktualisierung der Daten in der Datenbank.

Vorteil an der ganzen Sache der Server wird weit aus weniger Belastet als wenn man einen Cronjob verwenden würde. Zudem ist die Berechnung zuverlässiger und genauer als wenn man das über einen Cronjob laufen lassen würde.

Endlich mal einer, der meine Ansicht von unnützen Cronjob Anwendungen genau so sieht.

Danke!

ja okay dann hab ich ja wieder mal etwas dazugelernt:mrgreen:

splasch hat fast recht bis auf eine kleinigkeit.
du solltest deinen usern nicht zumuten das die berechnung der events mit in ihre seitenaufbau zeit reingerechnet wird. das ist das schlimmste was man machen kann.
stell dir nurmal vor dabei passiert ein fehler (und bei browsergames passiert immer irgendwo ein fehler und genau an solchen stellen passieren sie noch viel lieber als sonst wo wenn ich bau beruflich welche) dann kannst die seite inne tonne kloppen solange der fehler nicht behoben wurde. oder wenn vor weinachten nochmal schnell alle eingebäude in auftrag geben und der erste der am nächsten tag on kommt darf dann erstmal schön n paar minuten warten bis seine seite aufgebaut ist.

das was du brauchst nennt sich Deamon und lösst sich auch schön und schnell in php schreiben.
du brauchst einfach eine schleife die jede sekunden (oder so) n paar datensätze (nicht alle auf einmal) aus der datenbank hohlt die abgearbeitet sind und die änderungen dan vornimmt.

das ding wird dann von keinem user aufgerufen sondern läuft einfach im hintergrund und löst all deine probleme.

Cronjob.de - Kostenlose Cronjobs / Crontab

Wenn Cronjobs bei diesem Hoster nicht möglich sind, werden Deamons bestimmt nicht möglich sein.

Was du bedenken musst, wenn du es so machst, wie oben beschrieben, ist, dass es passieren kann, dass mehrer Benutzer in der selben Zeit einen Klick machen und Events gegebenenfalls das selbe Event zweimal berechnen. Arbeite hier mit transactions.

oder wenn vor weinachten nochmal schnell alle eingebäude in auftrag geben und der erste der am nächsten tag on kommt darf dann erstmal schön n paar minuten warten bis seine seite aufgebaut ist.

Da muß ich wiedersprechen das ist nur der Fall wenn man versucht per Script die Berechnung für alle Spieler durchzuführen. Was natürlich dann minuten dauern könnte darum macht man auch so ein Performenc lastige sache nicht.

Du braucht keinen Demon das selbe Ergebniss erreichst du wie oben im Beispiel genannten Prozedur. Was nur dabei zu beachten ist das du nur die Berechnung des einen Spieler durchlaufen läst das schaft der Server ohne Probleme unter 1 Sekunde.

Somit werden nur die Daten Aktualisiert die auch momentan benötig werden. Es macht keinen sin den Server unötig zu belasten mit berechnungen die man im Moment garnicht benötigt.

Diese Vorgehensweiße wird oft bei Cronjobs verwendet(Angewand) das man alles auf einmal von allen Spieler berechnen will und genau sollche Aktionen führen dann zu unerwarten fehlern. Stell dir mal vor ein Server stürz nach 2 min der Berechnung ab dann wurden einige Spieler aktualisiert sein und andere nicht.

Um sowas zu vermeiden müßte man eine Transaktion durchführen.

Warum also die Aufwendige Methode wenn man es sicherer und einfacher ohne Cronjob machen kann.Wenn man auf nummer sicher gehen will empfielt es sich mit Transaktionen zu arbeiten.Damit sind dann auch keine Racekonditionen manipulationen mehr möglich.

Mfg Splasch

Mit Ajax geht das auch ohne Delay…

Ich sehe keinen Grund, dass der Timer als Cronjob gestartet werden sollte.