2010-11-25 7 views
2

こんにちは私はユーザーがフォームからメッセージを入力するMySQLデータベーステーブルを持っていて、1分が経過した後に自動的にメッセージを削除する方法があるのだろうか? 私が使っているコードはPHPです。 ありがとう、非常に多くの返信:MySQLデータベースのメッセージを自動削除する

+0

あなたのテーブルのスキーマはどのようなものですか? –

+0

あなたはどのような種類のサーバーOSを実行していますか? – Thariama

答えて

1

古いメッセージを削除するには、cronジョブを使用します。

4

まあ、何か他のことを行う前に必ず削除クエリを実行することができます。たとえば、メッセージを確認するたびに、最初に1分以上経過したすべてのメッセージを削除します。

私はむしろ1分よりも古いメッセージを取得しないと思います。ログでうまくいくでしょう:)

+2

私はそれらを削除しないことに完全に同意します。私のデータベースから削除されるアイテムはほとんどなく、通常は単に無効化されています –

+1

ありがとう私は本当にデータベースがいっぱいになるのを止めるためにそれらを削除する必要があります...最初の提案 'あなたは何か他のことをする前に常に削除クエリを実行することができます。たとえば、メッセージを確認するたびに、最初に1分以上経過したすべてのメッセージを削除します。私はそのdohを考えなかった理由は分かりません! ありがとうございました:) – alli123

2

メッセージがDBに挿入されると、time_createdタイムスタンプを保存します。 PHPでは、タイムスタンプが現在の時刻の1分以内にあるメッセージのみを表示します。

4

私はそれを達成する2つの方法を考えることができます。

  1. スクリプトを作成してX分ごとに実行し、dbを変更します。
  2. スクリプトに新しいレコードを挿入する前または挿入後に期限切れのレコードをすべて削除します。
+0

挿入に関連して削除することは役に立ちません。 – Svish

+0

それは私が言いたいことではありません。私は改訂するでしょう。 –

+0

私はこの答えの2番目の箇条書きがクエストオンの直接の答えだと思います。期限切れのレコードは、ページが呼び出されるたびに削除できます。このようにして、cronジョブを設定する必要はありません。薄い溶液。つまり、私は「削除しないでください」という回答に同意します。私の経験では、テーブルの削除は大きな負担です。 – Haluk

1
  • あなたは(毎分を実行し、すべての古いメッセージ
  • を削除したり、テーブル内のvalid_until列を作るためにcronスクリプトを作成し、ために今それを設定することができます)+ 60 - のみを表示する行をどのvalid_until> = NOW()を持っています。
1

cronサービスを構築することは、おそらく不要な複雑さですが、私の頭に浮かぶ最初のことです。

sleepの後に挿入を実行するのと同じスクリプトでdeleteを呼び出すことができます。

sleep ($seconds); 
// call the delete query 

もう一つの方法はあなたのために削除いたしますMysqlのtriggerに遅延ロジックを通過させることです。

SELECT SLEEP(<seconds>); 
0

すべての返信/ help :) Svish 'による最初の提案あなたは他に何かをする前にいつでも削除クエリを実行できます。たとえば、メッセージを確認するたびに、最初に1分以上経過したすべてのメッセージを削除します。私はそのdohを考えなかった理由は分かりません!毎回ありがとう。

1

解決方法1:ユーザーのcronジョブをチェックし、

ソリューション2削除するには、毎分を実行します:

は私が個人的に最初のソリューションを提案するが、その仕事を使用するAJAXをuが、サーバーへのSSHアクセスを持っていない場合あなたは2番目を選択する必要があります:D

関連する問題