Hallo zusammen, kurze und für euch sicherlich einfach zu beantwortende Frage: Ist es möglich, mithilfe eines MySQL-Triggers ein externes Programm zu starten? Beispiel: Es existiert in einer DB die Tabelle "steuerung". Der Trigger löst aus, sobald eine Änderung (UPDATE) der Zelle "wert" vorliegt. Nun soll ein externes Programm starten. Ist dies möglich? Wenn nein, vielleicht der umgekehrte Fall: Wie kann ich innerhalb von Linux einen "Event" / Interrupt auslösen, sobald innerhalb einer MySQL-Datenbank eine Änderung vorliegt, sodass ich eine Aktion (Programm) ausführe!? Vielen Dank und Gruß
Was spricht gegen regelmäßiges Pollen der Datenbank, ist das so Zeitkritisch? Meist passiert ein "UPDATE" auch nicht völlig zufällig, der Prozess welcher das Update ausführt könnte auch ein anderes Programm anstoßen. Falls du unbedingt mit Triggern arbeiten willst: http://crazytechthoughts.blogspot.de/2011/12/call-external-program-from-mysql.html
Ok, danke. Ich weiß leider nicht, wie ich prozessorschonend ein Polling hinkriege. Letztendlich ist Polling ja immer eine Endlosschleife. Oder irre ich? DAnke!
jk schrieb: > Ich weiß leider nicht, wie ich prozessorschonend ein Polling hinkriege. > Letztendlich ist Polling ja immer eine Endlosschleife. Wie schnell musst du denn darauf reagieren? Wenn du nur jede Sekunde abfragst, dann ist der Ressourcenverbrauch überschaubar.
jk schrieb: > Letztendlich ist Polling ja immer eine Endlosschleife. Jedes Programm was sich nicht sofort beendet ist eine "Endlosschleife" jk schrieb: > Ich weiß leider nicht, wie ich prozessorschonend ein Polling hinkriege.
1 | var old = ... |
2 | while(true) { |
3 | var new = SELECT FROM .... |
4 | if (old != new) { |
5 | break; |
6 | } else { |
7 | sleep(1000 ms); |
8 | } |
9 | } |
Nach maximal einer Sekunde wirkt sich also eine Änderung aus, sind das Konfigurationsparamater kann man diese auch einfach anstelle in einer Varibalen zu speichern, einfach jedesmal neu laden wenn man sie benötigt.
Läubi .. schrieb: > Jedes Programm was sich nicht sofort beendet ist eine "Endlosschleife" Endlich hat jemand das Turingsche Halteproblem gelöst. ;-)
A. K. schrieb: > Läubi .. schrieb: >> Jedes Programm was sich nicht sofort beendet ist eine "Endlosschleife" > > Endlich hat jemand das Turingsche Halteproblem gelöst. ;-) Es kann halt so einfach sein ;-)
Naja, Trigger ist ja etwas mehr als nur ein Callback/Hook. Da könnte ja auch die Datenkonsistenz noch mit hineinspielen.
Hallo zusammen, danke erstmal für die zahlreichen Antworten! "Zeitkritisch" ist das Ganze eigentlich nicht...es würde reichen, wenn das (Perl?)-Skript innerhalb einer Sekunde entsprechend reagiert. Dann werde ich das so machen. Danke!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.