WebWork Magazin - Webseiten erstellen lassen, Online Medien, html

Webhoster, Webhosting Provider und Domain registrieren

Home | Registrieren | Einloggen | Suchen | Aktuelles | GSL-Webservice | Suleitec Webhosting
Reparatur-Forum | Elektro forum | Ersatzteilshop Haushalt und Elektronik


Homepage und Webhosting-Forum

Scripte und Programme für PHP, MYSQL. Diskussionen zur Programmierung im Web. Fragen zu CMS, Blogsoftware, Shops, Newsletter und vielen weiteren Scripten.


Forum » PHP & MySQL » Progge gerade nen Browsergame, und bräuchte mal hilfe... » Antworten
Benutzername:
Passwort: Passwort vergessen?
Inhalt der Nachricht: Fett | Kursiv | Unterstrichen | Link | Bild | Smiley | Zitat | Zentriert | Quellcode| Kleiner Text
Optionen: Emailbenachrichtigung bei Antworten
 

Progge gerade nen Browsergame, und bräuchte mal hilfe...
von subjective
Chris: Ja tust du Ein Cronjob muss ja nicht immer "Alles" durchgehen. Man schreibt einfach in eine Tabelle, was der nächste Cronjob zu erledigen hat. Damit kann man den Cronjob auch sehr häufig starten, er schaut dann erstmal ob eine Instanz von ihm schon läuft, als nächstes schaut er nach der nächsten Aufgabe in der Tabelle und führt sie aus. Wenn keine Aufgaben mehr vorhanden sind, beendet er sich.
von böner
so ähnlich hab ich's auch jetzt gemacht... nur kann das manchmal eine recht aufwenidige berechnung sein, vor allem wenn auch noch ein kampf dazu kommt... das ganze is noch ein wenig langsam...
von Chris Hunter
Also Böner... das entäuscht mich aber:

Eigentlich brauchst du keine Cronjobs. Ich denke mal du hast das Update in einer funktion

User_update(user_id);

warum machst du das nicht so das du vor der kampfberechnung das update ausführen lässt wie als wenn sich der angegriffenen user einloggt? der code dafür sollte ja schon vorhanden sein...

cronjobs verursachen nur übermäßig datenbanktraffic. wenn man mal überlegt das für ALLE user 24 mal am tag eine solche berechnung durchgeführt wird, dann sammelt sich das schon an über den Monat. Und Datenbanktraffic wird wohl dein größter feind werden...

sehe ich irgend etwas falsch?!?
von delta
Ou jup... volltreffer. Hab glitze gleiche Problem
von böner
ok, danke ! werd mal sehen. wenn's noch mehr probleme gibt, meld ich mich nochmal

Gruß Böner
von bastir
zu hause vielleicht per taskmanager von windows, es sei denn du hast linux, wo du auch cronjobs benutzen kannst, aber dann würdest du wahrscheinlich die Cronjobs kennen.

Zum testen reicht es aber auch aus, wenn du die cron.php von hand ausführst!

so long
von böner
ne, ich meine wie ich das jetzt auf meinem server zuhause tuen kann !
von bastir
Falls du es bei webcron.org machen möchtest, melde dich dort kostenlos an und erstelle einen "neuen Task"
Dort gibst du dann deine URL zu deiner cron.php (bspw. http://deinedomain.tld/cron.php) ein und das das ganze stündlich an jedem Tag ausgeführt werden soll.

Das script führt dann jede Stunde die cron.php aus.
In der Cron.php steht wie gesagt genau das drin, was sonst ausgeführt werden sollte, wenn der User sich einloggt hat, dabei dann jedoch für alle user zusammen.

so long
von böner
ich rechne momentan für schätzungen immer mit 1500 Spielern !

jede stunde, müsste mal überlegen, wie ich das hinkrieg !

wie genau geht den das jetzt mit dem cronjob ?

wenn ich jetzt z.B. jede stunde die datei cron.php auf meinem apache-server zuhause ausführen will, was muss ich dafür tuen ?

Gruß Böner

PS: Ihr seid echt schnell mit dem antworten in diesem Forum. Respekt !!!
von bastir
minütlich?

Meines Erachtens nach ist das dann etwas zu viel des Guten.
Solltest du irgendwann mal sehr viele User haben (nehmen wir das einfach mal an)
wirst du damit sehr viel Rechenleitung beanspruchen.

Wo ist denn das Problem, wenn die Dinge halt nur stündlich aktualisiert werden.
Ist doch besser, als wenn der User nach 2 Wochen erst wieder kommt und dann erst seine 256 Einheiten gutgeschrieben bekommt

Belasse es bei stündlich, so kenne ich es auch von anderen Browsergames!
von Philipp Gérard
Oder mit Timestamps arbeiten...das System müsste also bei Angriffen usw. ausrechnen, wie viele Einheiten des Spielers schon verfügbar sind - etc. Im Prinzip auch ohne Cronjobs machbar, bequemer ist es aber mit einem Cronjob.
von böner
stündlich ? am besten wäre permanent(natürlich net möglich *gg*) aber einmal pro minute wäre schon gut ! geht das ?

Gruß Böner
von bastir
böner schrieb am 02.03.2004 20:43
wie geht den das mir den cronjobs ?

Ein cronjob ist nichts weiter, als ein serverseitiges Programm, welches zu deinem vorher festgelegten Zeitpunkt ein php-Script "anstößt" etwas zu tun.

Du erstellst z.Bsp eine cron.php in der du von allen usern den Update-Prozess durchlaufen lassen kannst (bspw. per for/while Schleife)

Diese cron.php läßt du dann von einem cronjob stündlich anstoßen, so daß dieses Script stündlich die aktuellen Fortschritte in die Datenbank schreibt.

geht das auch ohne das traffic verbraucht wird ?

Es wird traffic verbraucht aber nur sehr wenig, da ja eigentlich nur auf dem Server Prozesse ausgeführt werden.

so long

von bastir
Das kann er sicher, aber so weit war böner ja auch schon.

Das Problem bei ihm ist doch, daß in der Zwischenzeit (bis zum nächsten login) schon weitere Einheiten fertig sind, die in die Schlachten mit einbezogen werden könnten.

Dazu braucht er nun mal cronjobs, die bspw. stündlich diesen job erledigen.

Meines Erachtens nach führt an cronjobs kein Weg vorbei.

so long
von böner
wie geht den das mir den cronjobs ?
geht das auch ohne das traffic verbraucht wird ?
wenns ne leere html-seite ist, wo weder was hin noch was zurück muss, dürfte das ja net viel sein !

//Wo finde ich denn dein Spiel?

is noch nicht online !
bin ja noch net fertig, auch wenn es schon halb läuft !
hab auch noch gar keinen server !


von KeyLF
wieso cronejobs? er kann doch bei jedem login das script ausführen?!
von bastir
Schau dir dazu mal webcron.org an.
Dort kannst du kostenlos cronjobs einrichten, falls dein Provider keine Cronjobs anbietet.

Dort habe ich auch einige Scripte.

Wo finde ich denn dein Spiel?

so long
von Philipp Gérard
cronjobs.
von böner
Ich programmiere seit eineigen Wochen ein Browsergame. Bin auch schon ziemlich weit gekommen.
Ich stehe jetzt allerdings vor einem Problem, bei dem ich hilfe brauche.

Bisher hab ich das immer so gemacht,das sobald sich jemand einloggt ausgerechnet wird, wieviel Rohstoffe er hat, wieviele Schiffe gebaut wurden, und welche Gebäude fertig sind. Nun gibt es dabei allerdings das Problem das wenn z.B. spieler 1 spieler 2 angreift, das die Schiffe die Spieler 1 im bau hat(und zum teil vielleicht schon fertig sind) nicht mitkämpfen.

Ich bräuchte also eine möglichkeit das die datenbank sich andauernd selber updatet !
Wie kann man das realisieren ?

PS: Oder kennt jemand ne andere möglichkeit ?

Wie wird das eingentlich bei anderen Browsergames gehandhabt ? Weiß das zufällig jemand ?

Bitte helft mir, wenn ich das nicht irgendwie gebacken kriegen, war die ganze arbeit umsonst !

Gruß Böner

Nach oben