PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : "Countdown" setzen


L3ct0r
15.10.2004, 22:00:14
Hallo,
bin neu hier, und ein ziemlicher n00b in Sachen PHP

Mein Freund arbeitet zurzeit an einem Browsergame wie ogame oder spacenations.
aber nicht mit MySQL sondern es basiert auf txt datein.
Nun hab ich folgendes Problem:
Jede minute soll man eine bestimmte Anzahl von Rohstoffen bekommen, die Anzahl ist in einer txt datei enthalten die variabl name ist
$prod = x (wieviel halt produziert werden soll)

es ist mir aber nicht gelungen einzustellen das der user x in einer min die rohstoffe $prod erhält..

Falls ihr nicht versteht was ich meine sagt es nur

mfg
L3ct0r

Usul
15.10.2004, 22:55:48
eieiei, von Textdateien kann ich nur abraten ! habe ich frueher auch gemacht, weil ich glaubte, MYSQL sei eh zu kompliziert. Aber voellig falsch, es ist eigentlich total simpel. Und danach willst du wirklich nie wieder grosse Datenmengen in Textdateien speichern. Und Browsergames basieren auf grossen Datenmengen. Sogar ein simples Stille Post (http://www.poehly.com/Add-Ons/SilentPost/silentpost2.php) Spiel, was ich mal geschrieben habe, hantiert schon mit zuviel Daten fuer Textdateien.

Vergiss am Besten diesen Weg. Viel zu umstaendlich! Ich empfehle dringenst ne Datenbank, wie z.B. MYSQL (http://de3.php.net/manual/en/ref.mysql.php) .

Usul
15.10.2004, 22:58:12
Und zu deinem eigentlich Problem:

Ich nehme an, dein Problem ist, dass es in PHP keine Threads gibt. D.h., das PHP ja immer erst dann ausgefuehrt wird, wenn ein Browser auf ein Skript zugreift. Du willst aber am liebsten jede Minute ne Skriptausfuehrung, richtig? Das musste dann halt simulieren, indem du bei jedem Skriptaufruf die Anzahl der Minuten seit dem letzten aufruf berechnest und dann die Rohstoffzunahme fuer jeden Spieler berechnest.

xabbuh
16.10.2004, 09:30:25
Eine andere Möglichkeit sind Cronjobs.

L3ct0r
16.10.2004, 10:33:35
Könnt ihr mir sagen wie das ungfähr geht?
so vielleicht

fopen(prod.txt"r+")
$aussetzen = time(60)


und dann?
ich glaub das ist sowieso alles falsch ^^'


nun mal zu mySQL ich habe nicht genug speicher für die datenbank..
das soll so ein Klassenprojekt werden

Usul
16.10.2004, 15:13:44
du merkst dir immer die letzte zeit seit dem letzten skriptaufruf:
$lasttime = time();

und so kriegste die sekunden, die seit dem letzten skriptaufruf vergangen sind:
$secondspassed = time() - $lasttime;
wobei $lasttime die zeit des letzten skriptaufrufef ist.

L3ct0r
16.10.2004, 22:58:45
ich weiß nicht ganz genau wo ich das einbauen soll
und wie geht das mit den Cronjobs
ich war mal auf www.cronjob.de

xabbuh
17.10.2004, 00:01:43
Im Prinzip läuft das Ganze so ab, dass du dir ein Script bastelst, welches die Aktions ausführt, die du regelmäßig vornehmen willst, in deinem Fall also das Gutschreiben von Rohstoffen etc.
Cronjobs sorgen nun dafür das bestimmte Scripte etc. immer zu einer bestimmten Zeit ausgeführt werden.
Diese Cronjobs kannst du unter Umständen selbst auf deinem Webspace einrichten, wenn dein Webspaceprovider dieses unterstützt. Ansonsten nutzt du einen Service wie die von dir angesprochene Seite www.cronjob.de (http://www.cronjob.de) oder den CronJob Dienst (http://www.selfphp.info/cronjobs/index.php) von SelfPHP.