2010-12-07 5 views
2

Ich habe eine PHP-Web-Anwendung und wenn in eine Tabelle eingefügt, habe ich einen Trigger geschrieben, um einige Punkte zu berechnen, und das braucht Zeit. Meine PHP-Anwendung wartet bis der Trigger abgeschlossen ist. Kann dieser Trigger in einem separaten Thread ausgeführt werden, sodass meine Anwendung nicht auf den Abschluss des Triggers wartet?Gibt es eine Möglichkeit, den Trigger in einem separaten Thread in MySQL auszuführen?

+0

Unterschiedlicher Thread in Ihrer PHP-Anwendung? Oder ein anderer MySQL-Thread? – Orbling

+0

Kann in keiner Sache sein. Ich kann den Trigger als gespeicherte Prozedur in einem anderen PHP-Thread ausführen oder in einem separaten Thread in MySQL ausführen. Aber ich ziehe es vor, in einem separaten Thread in MySQL – tamilnad

Antwort

4

Nr

Aber wie Bill Clinton hätte gesagt, „und ich werde Ihnen sagen, warum.“

Einer der großen Vorteile eines Triggers ist, dass die Aktionen des Triggers in der Transaktion der ursprünglichen Anweisung enthalten sind, die den Trigger ausgelöst hat. Dies ist eine gute Sache der relationalen Denkweise, weil wir ACID-Konformität mögen.

Jetzt, wenn Sie diese ACID-Kompatibilität nicht benötigen, und es ist in Ordnung, dass die ausgelösten Aktionen "eventuell" wirksam werden, dann entfernen Sie den Auslöser und machen Sie eine "Aktionstabelle". Dann kann entweder der Auslöser etwas in die Aktionstabelle fallen lassen oder Ihr PHP-Code könnte dies tun. Sie können einen Job haben, der diese Tabelle einmal pro Sekunde abfragt, und wenn er etwas findet, wird er ausgeführt. Mach dir keine Sorgen über die Leistung auf dem Daemon, eine einmal pro Sekunde Abfrage einer Tabelle, die normalerweise leer ist, ist nichts.

+0

laufen zu lassen Danke für die informative Antwort – tamilnad

+0

Danke, dass Sie meinen Morgen mit diesem Zitat gemacht haben! :) –

Verwandte Themen