2010-12-07 40 views
2

J'ai une application web PHP et quand inséré dans une table, j'ai écrit un déclencheur pour calculer quelques scores et cela prend du temps. Mon application PHP attend jusqu'à la fin du déclencheur. Ce déclencheur peut-il s'exécuter dans un thread séparé de sorte que mon application n'attendra pas la fin du trigger?Existe-t-il un moyen d'exécuter le déclencheur dans un thread séparé dans MySQL?

+0

Fil différent dans votre application PHP? Ou autre thread MySQL? – Orbling

+0

Peut être dans n'importe quoi. Je peux exécuter le déclencheur en tant que proc stocké dans un thread PHP différent ou peut fonctionner dans un thread séparé dans MySQL. Mais je préfère courir dans un thread séparé en MySQL – tamilnad

Répondre

4

n °

Mais comme Bill Clinton aurait dit, « et je vais vous dire pourquoi. »

L'un des grands avantages d'un déclencheur est que les actions du déclencheur sont contenues dans la transaction de l'instruction d'origine qui a déclenché le déclencheur. C'est une bonne chose de la mentalité relationnelle parce que nous aimons la conformité ACID.

Maintenant, si vous n'avez pas besoin de cette conformité ACID, et que les actions déclenchées prennent effet «éventuellement», supprimez le déclencheur et créez une table «actions». Ensuite, soit le déclencheur peut déposer quelque chose dans la table des actions ou votre code PHP pourrait le faire. Vous pouvez avoir un travail d'interrogation de cette table une fois par seconde ou plus, et s'il trouve quelque chose, il l'exécute. Ne vous inquiétez pas des performances sur le démon, une requête une fois/seconde d'une table qui est habituellement vide n'est rien.

+0

Merci pour la réponse informative – tamilnad

+0

Merci d'avoir fait ma matinée avec cette citation! :) –