Eventhandler in PHP

Hallo

ich suche eine Möglichkeit wie ich einen Eventhandler in php realisieren kann. In meiner applikation habe ich aufträge von verschiedenen clients (abgelegt in einer datenbank). jetzt möchte ich diese aufträge abarbeiten, sobald sie fertig sind anstatt zu warten bis irgendein client wieder auf die seite kommt.

mit anderen worten: php soll serverseitig aktiv werden, wenn eine zeit abgelaufen ist. einfach daten aus datenbank lesen, berechnung machen, daten zurückschieben, ende. keine client-server kommunikation

wie geht sowas?

Du kannst PHP-Scripte über Cronjobs mittels Shel-Aufruf starten. Dabei rufst du den PHP-Interpreter auf und übergibst das abzuarbeitende Script. Allerdings kannst du auf diese Weise nur jede Minute eine bestimmte Aktion ausführen, Sekundengenau kenne ich keine Alternative.

normal würd ichs ja so machen (so wie ichs in c gelernt hab), dass ichn neuen thread oder prozess starte, der über eine IPC-maßnahme die event-verarbeitung lostritt (oder sie selbst vornimmt).
aber multithrweading in php is nicht, wenn man dem glauben schenken darf was ich bisher in google gefunden hab. das einzige wären diese pcntl-funktionen, aber die gibts nur bei php, das unter unix läuft

jemand ne andere idee?

Hi,
wenn der Server nicht dir gehört, dann läuft serverseitig aber nichts was du kontrollieren kannst. Vom Provider wird nach einiger Zeit alles abgeschossen.
PHP Interpreter wird nur vom Webserver aufgerufen um die Scripte abzuarbeiten.

Daher bleibt neben den Cron-Jobs nur Trigger der Datenbank - wenn sie den Shell-Aufruf zulassen. Oder dein Script meldet die Aktivität an einen von dir kontrollierten Rechner der dann die benötigten Scripte per WebService, Remote-Execution oder ähnliches ausführt.

Hast du einen Root-Server - naja, da erübrigt sich die Frage.

Gruss
Joey

Hallo,
Das kommt drauf an was du für berrechnungen machen willst.

Bei Webprojekten wo nur minimale berechnungen Über den EventHandler ablaufen gehe ich so vor das ich vor aufbau der Seite eine Klasse includiere die so eine Art EventHandler ausführt.
Wenn es größere berechnungen sind dann lass ich im Hintergrund einen Cronjob laufen, bzw bei Sekundengenauer Berechnung lass ich ein Script in einer Endlosschleife laufen das per System Daemon / unter Windows als Service gestartet wird.

Ist alles net wirklich schön, aber ich hab noch net wirklich eine Bessere Lösung gefunden.
pcntl is sicher auch eine idee, habe ich aber noch nie mit gearbeitet.

Gruß