Es geht auch anders und dabei werd ich mal jetzt nur den theoretischen teil behandeln.
Die Aussage, "das Script soll einen Kampf starten" versteh ich jetzt mal so dass es um ein browserbasiertes onlinegame geht.
Ich weiss jetzt nicht auf welcher seite du stehst also ob du betreiber dieses games bist oder nur nutzer der sich mit was auch immer einen Vorteil verschaffen will.
Für beide Seiten ist die folgende Möglichkeit aber eine Variante, ohne Server-Cronjobs auszukommen
Man lagert diesen Cronjob einfach in das Script aus.
Im Klartext heisst dies, man legt eine mysql-tabelle an, in der verschiedene cronjobs abgelegt werden. Dabei erhält jeder Cronjob ein Feld für die letzte Aktion, am besten unix timestamp nehmen, und dann sollte auch abgelegt sein, in welchen zeitabständen dieser Cronjob aufgerufen werden soll. Ausserdem sollte man hinterlegen was aufgerufen werden soll, am besten die php datei die included/required werden soll.
Diese Daten, aller Cronjobs, werden dann als serialisiertes Array in eine Cachetabelle geschrieben, in der, wenn möglich, auch als serialsiertes Array schon die Konfiguration steht. So kann man z.b. mit einer anfrage an die Cachetabelle ne ganze menge informationen auslesen, die für die steuerung des Scriptes notwendig sind
Nun zum Cronjob interface.
Dieses wird bei
jedem Aufruf der Seite gestartet. Da alle Cronjobs gecached schon vorhanden sind (mit der einen anfrage an die Cachetabelle bekommt man ja alle infos die man braucht), kann man nun das serialsierte array wieder in unserialsiertes array umwandeln und alle cronjobs in einer foreach schleife durchlaufen lassen. Falls der Cache nicht vorhanden ist ruft das interface die cronjobtabelle direkt auf und lässt alles durchlaufen(initialstart).
Falls der timestamp+zeitabstand kleiner als der aktuelle timestamp ist kann man nun die cronjobdatei includen. Dabei sollte man dann noch in der foreachschleife ein Variable mit durchziehn, in der steht ob man denn eine cronjobdatei eingebunden hat.
sollte dies der fall sein, wird die tabelle mit den cronjobs ausgelesen, und das serialsierte array wieder in die cachetabelle geschrieben.
Noch etwas zu den cronjobdateien
die cronjobdateien führen bekanntlich eine Aktion X aus, ausserdem sollte darauf geachtet werden, dass innerhalb der cronjobdatei der cronjob in der Datenbank aktualisiert wird, das caching in die cachetabelle übernimmt ja dann wieder das cronjobinterface.
Angestossen werden dann diese Aktionen durch den benutzer.
Falls du das script nur für dich einsetzen möchtest, kannst du ja einen browser nehmen, der automatisch aktualisiert, oder du bindest in dein script noch nen metarefresh-tag ein.
Falls noch fragen sind nur zu.
---
http://www.amp-lified.de