web-dev-qa-db-ja.com

時間が経過した後にmysql行を削除する方法は?

私はこれからどこから始めればよいのか分かりません:

postIDDateを格納するデータベースがあります。

私がやりたいのは、Dateが今日よりも少ないすべての行をWebサイトに自動削除させることです。このスクリプトには、ユーザー入力をまったく含めることができません。ボタンのクリックはなく、何もありません。スクリプトは毎日深夜に実行する必要があります。

私はこれを行う何かをあちこち探していましたが、まったく何も見つかりませんでした。

14
Sweepster

PHPスクリプトを使用して、cpanelでcronジョブを使用できます。

例:

cronjobcommand.php

<?php 
 include 'your_db_connection';
 mysql_query("DELETE FROM your_table_name WHERE Date < NOW()");
?>

参考までに、以下のスクリーンショットを添付しました。

enter image description here

19
Mar Cejas

1and1のような共有ホスティングを使用していて、cronを使用できない場合は、次の2つの方法があります。

  • mysql events mysqlにタイムトリガーを配置できます。これは、ユーザー入力によって起動されることなく、必要なときに実行されます。

  • 1and1 :(を使用しているためにmysqlイベントを作成できない場合は、 webcron を使用することもできます。

実行したいphpスクリプトのURLをwebcronに伝えるだけで、必要な間隔でトリガーされます。

4

なぜ毎日cronjobを使用するのですか?出力でデータをフィルタリングしてみませんか。たとえば、選択したチェックで、投稿日が今日と等しいかどうかを簡単なwhereを追加して確認します。

SELECT * FROM `posts`
WHERE (DATE(`post_date`) = DATE(NOW()));

この方法では、特別な時間にデータベース管理/ cronジョブを実行する必要はありません必須データベース管理のためだけに使用されます。その後、不要なデータを削除できますいつでも次のようなmysqlコマンドを使用します。

DELETE FROM `posts` WHERE (
    DATE(`post_date`) < DATE(NOW())
)
3

ほとんどのホストは、特定の時間にコマンドを実行できるcron(8)サービスを提供します。 crontab(1)プログラムを使用して、どのコマンドをいつ実行するかを記述したcrontab(5)ファイルを管理します。

利用できる機能はたくさんありますが、適切なMySQLコマンドを実行するプログラム(シェルスクリプト、phpスクリプト、Cプログラムなど)を作成すると、cron(8)を介してプログラムを完全に呼び出すことができます。ハンズオフファッション。

_crontab -e_を実行して、現在のcrontab(5)ファイルを編集します。存在しない場合は、役立つヘッダーが付いたものを入手できれば幸いです。そうでない場合は、これをコピーします。

_# m h  dom mon dow   command
_

列は、コマンドを実行する分、時、曜日、月、および曜日を示します。コマンドを実行するタイミングを決定するために、列のすべての数値は基本的にAND演算されます。

したがって、毎晩深夜は次のようになります。

_0 0 * * * /path/to/executable
_

非常に柔軟性があるので、ドキュメントに時間をかけてください。多くの用途があります。

2
sarnold

cronジョブ(スケジュールされたタック)を設定する必要があります。

cron job は、LinuxおよびUnixオペレーティングシステム用の自動プログラムセットアップです。これにより、ユーザーは特定の日時に複数のコマンドまたは機能を実行できます。

cpanelの設定にcronジョブがあります。まず、各日付の後にレコードを削除するためのロジックを使用してphpスクリプトを作成する必要があります。サーバーから日付を取得し、削除するスクリプトを記述します。

次に、cpanelの[cron]タブに移動し、時間間隔の設定を行ってcronを実行し、phpスクリプトファイルのパスを指定します。

0
user319198