Meiner Meinung nach kommt es ganz auf die Art der Ereignisse an, um die beste Lösung zu finden.
Du hast ja generell die Wahl, ob es passive Ereignisse (e.g. Polling) oder aktive Ereignisse (e.g. Trigger) sind.
Generell würde ich bei deinem Szenario "Nach Insert in
mySQL soll ein php getriggert werden" den passiven Weg gehen, falls es nicht extrem zeitkritisch ist.
So wäre das ganze relativ einfach über einen Cronjob zu lösen, wie ihn himitsu vorgeschlagen hat.
Hier kann der Cronjob auf das Minimum eingestellt werden (1 Minute) und einfach bei Ausführung prüfen, ob ein neuer Datensatz in der entsprechenden
mySQL-Tabelle vorhanden ist und dann das entsprechende php-Script ausführen bzw, wenn der Cronjob bereits ein php-Script ist, entsprechende Aktionen durchführen.
Du hast bei "deinem Kenntnisstand" glaube ich einfach nicht bedacht, dass auch in einem Cronjob, der in einem Rhythmus von 1 Minute ausgeführt wird, Bedingungen möglich sind und somit auch mal einfach gar nichts passieren kann, wenn die Bedingung nicht zutrifft
Ist die minimale Reaktionszeit eines Cronjobs (1 Minute) zu langsam, ginge es in
mySQL auch über einen aktiven Trigger und einer UDF, die wiederum bei einem Insert ein externes php-Script triggert.
Diese Lösung ist allerdings um einiges aufwändiger, da sie, je nach UDF, evtl. eine Neukompilierung von
mySQL erfordert.
Wie du siehst, sind beide Lösungen hier auf dein Szenario "
mySQL-Änderung" gemünzt.
Die beste Lösung für dich wird sich aber nur finden lassen, wenn man alle möglichen Ereignisstypen bei dir kennt und ob die Möglichkeit besteht, bei ALLEN entsprechenden Ereignissen ein Shell-Commando auszuführen.
Ist das der Fall, wird es einfach, da du über die Shell einfach ausführen kannst, was du willst (wie z.B. den php-CLI Interpreter).
Kannst du das aber nicht bei allen Ereignissen, wird es u.U. komplizierter.
Eine andere Möglichkeit wäre es auch noch, statt einem Cronjob z.B. ein node.js-Script auf dem Server laufen zu lassen, das die
mySQL-Tabelle aktiv überprüft und dann darüber das php-Script triggert. Wobei sich dann die Frage stellt, wofür man dann noch ein php-Script benötigt
Ich habe jedoch selbst so etwas schon einmal für ein Online-Game gemacht: Der user loggt sich in ein php-Framework ein, Ereignisse werden jedoch über Websocket an einen node-Server gesendet, der dann auch ohne zeitverzögerung die entsprechenden Aktionen ausführen kann.
Desweiteren bietet sich vielleicht auch ein Call über einen REST- /
SOAP- / Whatever-Service an, der die entsprechenden Aktionen ausführt.
Hierzu müsste aber die Möglichkeit gegeben sein, bei jedem relevanten Ereigniss einen Request abzuschicken.