2009-04-13 8 views

Antwort

4

MySQL hat jetzt Trigger und Stored Procedures, aber ich glaube nicht, dass sie irgendeine Möglichkeit haben, einen externen Prozess zu melden, so weit ich weiß, dass es nicht möglich ist. Sie müssten die Datenbank jede Sekunde abfragen, um nach neuen Datensätzen zu suchen.

Auch wenn dies der Fall ist, geht das davon aus, dass Ihr PHP-Prozess langlebig ist, so dass er es sich leisten kann, herumzuhängen, damit ein Datensatz erscheint. Da PHP meist für Websites verwendet wird, auf denen der Code ausgeführt wird und dann so schnell wie möglich beendet wird, ist es unklar, ob das mit dem, was Sie haben, kompatibel ist.

+0

Offenbar ist es möglich, aber mit einer Art Add-in: http://dev.mysql.com/doc/refman/5.0/en/faqs-triggers.html#qandaitem-22-5-1-10 –

5

Die einfachste Sache ist wahrscheinlich, die Datenbank alle paar Sekunden abzufragen und nach neuen Datensätzen zu suchen. Aufgrund des Query-Cachings in der Datenbank sollte dies die DB-Performance nicht wesentlich beeinträchtigen.

2

Wenn alle Ihre Datenbankänderungen von PHP gemacht werden, würde ich eine Wrapper-Funktion für mysql_query erstellen und wenn der Abfragetyp INSERT, REPLACE, UPDATE oder DELETE wäre, würde ich eine Funktion zum Senden der entsprechenden E-Mail aufrufen.

EDIT: ich vergaß zu erwähnen, aber man könnte auch etwas tun, wie folgt aus:

if (mysql_affected_rows($this->connection) > 0) 
{ 
    // mail(...) 
} 
-1

diese relativ getan werden kann leicht Stored Procedures und Trigger verwenden. Ich habe einen "Live View" -Bildschirm mit einem Scroll-Display erstellt, der mit neuen Ereignissen aus meiner Ereignistabelle aktualisiert wird. Es kann ein bisschen fummelig sein, aber sobald es schnell läuft.

2

Sie können einen Trigger erstellen, der ausgeführt wird, wenn eine Aktualisierung stattfindet. Es ist möglich, einen externen Prozess über eine UDF (benutzerdefinierte Funktion) auszuführen/zu benachrichtigen. Es gibt keine eingebauten Methoden dafür, also ist es ein Fall von einem UDF-Plugin, das es für Sie tun wird.

Google für 'mysql udf sys_exec' oder 'mysql udf ipc'.

Verwandte Themen