2011-12-16 2 views
1

Я хочу, чтобы скрипт удалял строку, если разница между меткой времени, хранящейся в db, и текущим временем составляет 5 минут и более.PHP MySQL, если время составляет 5 минут больше или более, то запомненное время

Пример

Строка в БД имеет 2011/12/25 10:00
текущее время 2001/12/25 10:06

Хочу, чтобы удалить строку дБ ,

+2

Это очень широкий. С какой частью вы боретесь? Можете ли вы показать код, который вы в настоящее время запрашиваете в базе данных и т. Д.? –

+1

Я думаю, что вы ищете какой-то тип работы cron. – 1ftw1

+0

@ Russell Вы действительно хотите дважды проверить свой принятый ответ. – deceze

ответ

0

Если вы находитесь в Linux, вы можете написать chron job, который выполняет скрипт php (или почти любой другой язык), который это делает. Насколько мне известно, база данных не будет иметь такую ​​функциональность, вам нужно написать код, который активно это делает. Надеюсь это поможет.

+0

chron? или cron? : P – Julien

+0

Woops cron lol, hm, всегда думал, что он был назван в честь [Chronos] (http://en.wikipedia.org/wiki/Chronos), как и многие вещи, основанные на времени, моя ошибка. Интересно, как это никогда не было нажато, я написал много из них: S – SuperTron

-3

попробовать это, не тестируется Тхо:

$query = mysql_query("SELECT * FROM table"); 
$result = mysql_fetch_array($query); 

$id = $result['id']; 
$timestamp = strtotime($result['timestamp']); 
if($timestamp < time()-300){ 
mysql_query("DELETE FROM table WHERE id=".$id.""); 
} 
+2

Вытягивание * всех * записей из базы данных в PHP, чтобы затем * возможно * удалить первую запись? -1000 – deceze

+1

Ну, учитывая тестовый пример, содержащий только один элемент старше пяти минут, и этот элемент является первой записью, он будет работать. – CodeCaster

3

Почему предложения хрон? Вы можете легко вызвать очень простое заявление о выпуске на каждом просмотре страницы. В настоящий момент это становится узким местом (и тогда мы говорим о массивной структуре под напряжением или в очень загруженном месте), может оказаться целесообразным понять, почему запрос настолько медленный. Запустите запрос объяснения, примените некоторые индексы и т. Д. Если проблема все еще существует, возможно, это слишком большая работа, чтобы ждать посетителей, а затем пришло время для cron.

До тех пор, просто выполнить следующий запрос на каждой страницы:

delete 
from 
    YourTable 
where 
    adddate(YourDateTimeColumn, interval 5 minute) < now() 
2

Код выше немного неправильно. Это должно быть

delete 
from 
    YourTable 
where 
    adddate(YourDateTimeColumn, interval 5 minute) < now() 

Был на минуту, его не должно было быть.

Смежные вопросы