2011-07-14 9 views
2

私は、テーブルのすべての行を処理する必要があるWebアプリケーションを作成しています。私はテーブルの行ごとに1つの子PHPプロセスを産んでいます。私は安全機構を実装しているので、PHPプロセスが行を処理中に中断した場合、新しいPHPプロセスが前記行を処理するために生成されます。これを行うには、すべてのPHPプロセスが10秒ごとにチェックインする新しいテーブルを作成します。 5分以上チェックされていないすべての行を削除するにはMySQLが必要です。そのため、私のアプリケーションはその行を処理する新しいPHPの子を作成することを知っています。ある間隔でクエリを実行するにはどうすればよいですか?

私はある間隔でクエリを実行するようにMySQLを設定することは可能ですが、どうすればよいか分かりません。

〜stackoverflowのを入力します〜


編集:私はこの100%のMySQLを行う方法を学ぶことを期待していました。 1時間ごとに、または毎日特定の時間にクエリを実行するようにMySQLを設定する方法はありませんか?

答えて

5

MySQLイベントは、スケジュールに従って実行されるタスクです。そのため、スケジュールされたイベントと呼ぶことがあります。 ...概念的には、Unixのcrontab(「cronジョブ」とも呼ばれます)やWindowsタスクスケジューラの考え方に似ています。

http://dev.mysql.com/doc/refman/5.1/en/events-overview.html

そして、ここで素敵な構文は次のとおりです。http://dev.mysql.com/doc/refman/5.1/en/create-event.html

+0

私が探していたもの – Hubro

7

Crontab。 mysqlクライアント(mysql -uusername -ppassword dbname -e 'query here')を使用してクエリを直接実行するか、クエリを実行するPHPスクリプトをスケジュールすることができます。

DELETE FROM table WHERE checked_into < CURRENT_TIMESTAMP - INTERVAL 5 MINUTE 
0

特定の間隔でMySQLクエリを実行する方法の1つは、cronジョブを設定することです。あなたのウェブサーバーに完全にアクセスできるとすれば、これは実行可能でなければなりません。 Xの時間間隔ごとに実行するSQL操作を行うPHPページを作成してから、その間隔でcronジョブを実行するようにスクリプトを設定します。詳細:http://en.wikipedia.org/wiki/Cron

0

私は、あなたが探していることは最初のMySQL 5.1で導入され、event schedulerだと思います。

イベントスケジューラの余分な層を避けるために、プログラムを少し再設計する必要があるかもしれません: プロセスがしばらくチェックインしていない行を削除するのではなく、チェックインタイムスタンプ。そして、ある行がタイムスタンプで非常に古いチェックを持っている場合は、新しいPHPプロセスを生成することができます。

関連する問題