Rolf B: Durchführung PHP gesteuerte Funktionen ohne http-Request

Beitrag lesen

Hallo MB,

Meines wissens nach wird PHP-Skripte erst durch einen http-Request Aufruf aktiv

Das ist eine Möglichkeit, ja.

Möglichkeit 2 ist der Aufruf durch einen von Systemtimer gesteuerten Job. Unter Unix CRON, unter Windows SCHTASKS (a.k.a. Aufgabenplanung).

Möglichkeit 3 ist ein eigenständiger Prozess, der einfach in einer Endlosschleife läuft und irgendwie seine Arbeit einplant. Wenn er nichts zu tun hat, legt er sich schlafen. Das geht mit der sleep-Funktion, oder bei einem Socket-Listener über socket_select(). PHP ist aber meines Wissens nicht als Langläufer gedacht, es mag da zu Speicherproblemen kommen wenn der Prozess zu lange läuft. Und PHP ist auch nicht unbedingt absturzsicher.

Für die Möglichkeiten 2 und 3 brauchst Du Rechte am Server, die Du bei einem einfachen Webhoster normalerweise nicht bekommst.

Es gibt noch eine andere Möglichkeit: Ich habe vor vielen Jahren ein MMOG gespielt, das war in PHP geschrieben und da mussten im Halbstundentakt die Welt-Updates laufen. Der Autor hat das GANZ clever gelöst. Weil er wusste, dass es im Spiel ständig PHP Requeste hagelte, hat er einfach die User-Requeste als Timer verwendet, in der Script-Initialisierung abgefragt, ob das Welt-Update fällig ist, dann eine Sperre in die DB gesetzt, das Welt-Update durchgeführt, die Sperre freigegeben und dann ganz normal den Request weiter ausgeführt. So ein Update dauerte locker 20-30 Sekunden, und so lange saß man vor seinem Browser und konnte nichts tun. Was BITTER war, denn man konnte Angriffe gegen gegnerische Städte fahren und wenn man derjenige war, in dessen Request das Update ausgeführt wurde, saß man mit seinen Katapulten 20s wie die Ente auf dem Teich vor den feindlichen Mauern und konnte nicht den Kopf einziehen, wenn da eine Verteidigungsarmee stand. Irgendwann haben sie es dann auf CRON umgestellt, damit wurde der Server im Halbstundentakt einfach für alle grottenlahm. Hach ja, Erwin "Videoblitz" F. und sein Zorn der Götter, selbst Google kennt das nicht mehr 😂

Rolf

--
sumpsi - posui - clusi