2012-03-26 47 views
14

我不知道從哪裏開始:如何在時間流逝後刪除mysql行?

我有一個數據庫,存儲postIDDate

我想要做的是讓我的網站自動刪除所有行,其中Date比今天少。該腳本根本不能有任何用戶輸入。沒有按鈕點擊,什麼都沒有。腳本必須每天午夜運行。

我一直在尋找這樣做的東西,我什麼都沒發現。

+0

有許多方面的這個:之後您可以通過mysql命令使用一樣隨時刪除不需要的數據(1)寫的'DELETE'聲明; (2)創建一個運行'DELETE'語句的腳本; (3)設置腳本在午夜每晚運行。你需要哪些幫助? – ruakh 2012-03-26 00:56:49

+0

我需要幫助來弄清楚如何讓我的代碼在沒有用戶輸入的情況下自動觸發。下面的答案都指向了CRON,所以我會研究一下。 – Sweepster 2012-03-26 01:57:22

回答

19

您可以使用PHP腳本並在您的cPanel上使用cron作業。

示例:

cronjobcommand。php

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

我附上了一張截圖,供您參考。

enter image description here

0

您應該爲它設置cron作業(計劃粘性)。

A cron job是一個用於Linux和Unix操作系統的自動程序設置。它允許用戶在特定的時間和日期執行多個命令或功能。

你在你的cPanel設置中有cron作業。首先你需要在每個日期之後用你的邏輯創建一個刪除記錄的php腳本。從服務器取出日期並寫入腳本以進行刪除。

然後轉到您cPanel中的cron選項卡,並設置時間間隔來運行cron並提供您的php腳本文件的路徑。

2

大多數主機提供cron(8)服務,可以在特定時間執行命令。您可以使用crontab(1)程序來管理運行哪些命令時描述的crontab(5)文件。

有很多可用的功能,但是如果你編寫一個運行相應MySQL命令的程序(shell腳本,php腳本,C程序,無論什麼),你可以通過cron(8)完全手動調用程序,關閉時尚。

運行crontab -e編輯您當前的crontab(5)文件。如果不存在,希望你會得到一個有用的標題。如果沒有,請複製:

# m h dom mon dow command 

這些列指示執行命令的分鐘,小時,月,月和星期幾。列中的所有數字基本上都進行了與運算,以決定何時運行命令。

因此,每晚午夜應該是這樣的:

0 0 * * * /path/to/executable 

這是非常靈活的,所以把一些時間到文檔中,你會發現許多用途爲它。

-2

MySQL沒有任務調度程序。因此,您必須使用操作系統的任務計劃程序(Linux下的CRON),或者在主頁腳本(應顯示不斷變化的數據的另一個頁面)期間午餐基本任務檢查器子腳本。

+4

這是不正確的。 MySQL有一個事件調度器,在5.1.6版本(2006-02-01)中實現。更多信息:[MySQL Event Scheduler](http://dev.mysql.com/doc/refman/5.1/en/events.html)。 – devrique 2014-08-24 15:58:50

4

對於那些在那裏誰是一個共享的主機,喜歡的1and1的,並且不能使用cron,這裏有2備選方案:

  • mysql events讓你把一個時間觸發在mysql上,它會在你想要的時候執行,而不必被任何類型的用戶輸入引發

  • 如果你不能創建mysql事件,因爲你在1and1 :(另一種方法是使用webcron

你只需要告訴webcron你想運行的PHP腳本的URL,他們會在間隔觸發它爲你想要的

3

爲什麼使用日常cronjobs? ?爲什麼不過濾輸出數據。例如,在您選擇檢查,如果發佈日期等於今天與添加一個簡單的where:你不要求做任何特殊的時刻你的數據庫管理人員/ cronjobs

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

這樣,這將是僅用於數據庫管理。

DELETE FROM `posts` WHERE (
    DATE(`post_date`) < DATE(NOW()) 
) 
+0

假設,我有這種情況,在我的數據庫中,我有記錄在特定日期發佈,需要在某個特定截止日期刪除。你會做什麼來運行腳本automaticaly? – 2016-07-29 15:11:14

+0

@sudhakarphad對不起,我遲到了;在這種情況下,您可以將截止時間添加到比較(post_date +截止時間)。 – 2016-08-28 07:08:39