2010-12-07 12 views
2

私はPHP Webアプリケーションを持っています。テーブルに挿入すると、いくつかのスコアを計算するためのトリガーを作成しましたが、これには時間がかかります。 PHPアプリケーションは、トリガーが完了するまで待機します。 このトリガーを別のスレッドで実行して、アプリケーションがトリガーの完了を待たないようにすることはできますか?第MySQLの別のスレッドでトリガを実行する方法はありますか?

しかし、ビル・クリントンなど

+0

PHPアプリケーションのスレッドが異なりますか?または別のMySQLスレッド? – Orbling

+0

何でも入れることができます。別のPHPスレッドでストアドプロシージャとしてトリガを実行することも、MySQLの別のスレッドで実行することもできます。しかし、私はMySQLの別のスレッドで実行することを好む – tamilnad

答えて

4

は、言っただろう「と私はなぜあなたを教えてあげましょう。」

トリガーの大きな利点の1つは、トリガーのアクションが、トリガーを発生させた元のステートメントのトランザクション内に含まれていることです。これは、ACID準拠が好きなので、リレーショナルの考え方からは良いことです。

ACIDの準拠が必要ない場合、トリガーされたアクションが "結局"有効になるようにしたら、トリガーを削除して「アクション」テーブルを作成します。次に、トリガーがアクションテーブルに何かをドロップするか、PHPコードがそれを実行する可能性があります。このテーブルに1秒おきにクエリを実行し、何かを見つけた場合は実行します。デーモンのパフォーマンスについて心配する必要はありません。通常は空のテーブルの1回目/ 2回目のクエリは何もありません。

+0

有益な答えをありがとう – tamilnad

+0

この引用符で私の朝を作ってくれてありがとう! :) –