3

データベースの広告テーブルにいくつかの行を追加しました。それらのプロパティには、作成日と有効期限が含まれています。

有効期限が切れた行を自動的に削除するには、php スクリプトが必要です。

Pls は私のプロジェクトを支援します。ありがと

4

3 に答える 3

4

MySQL のイベント スケジューラを使用して、有効期限が切れたときにそのようなレコードを自動的に削除できます。

CREATE EVENT delete_expired_101
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 3 WEEK DO
DELETE FROM my_table WHERE id = 101;

または、期限切れのすべてのレコードの自動パージを定期的に実行するには:

CREATE EVENT delete_all_expired
ON SCHEDULE EVERY HOUR DO
DELETE FROM my_table WHERE expiry < NOW();
于 2012-09-02T14:30:11.873 に答える
2
<?php
   $today = getdate();
   if($today <= $expirayDate)
   {
       //your deletion logic
   }
?>

もう 1 つの方法は、select クエリをフィルタリングすることです。つまり、有効期限が切れていないすべてのフィールドを非表示にします。

$query = "SELECT * FROM `yourTable` WHERE `expiration` >= NOW();";
于 2012-09-02T13:32:58.780 に答える
1

あなたが探しているのは ですcrontab

これを使用すると、スクリプトを特定の時間に実行するようにスケジュールできます。次に例を示します。

deleteExpiredRows.phpの間隔で実行5 minutes
updateOnlineUsers.php2 hours

Cron は非常に使いやすいです。このクイック リファレンス ガイドを確認してください

Web ホスティングで crontab を設定する:

/path/to/hosting/php /home/user/public_html/script.php

PHP へのパスは異なる場合があるため、この情報についてはホスティング会社にお問い合わせください。crontab の詳細については、stackoverflow を参照してください。

注: Web ホスティング サービスが crontab をサポートしているかどうかを確認することをお勧めします。

これが完了したら、PHP スクリプトを作成して、現在の時刻より古いすべての行を削除するだけです。

于 2012-09-02T14:42:39.660 に答える