самоочистка базы данных mysql на php

Discussion in 'PHP' started by dondy, 28 Jan 2016.

  1. dondy

    dondy Member

    Joined:
    5 Jun 2015
    Messages:
    560
    Likes Received:
    61
    Reputations:
    5
    всем привет
    в базе данных отмечаю в столбце date_time время активации инвайт-кода, вот таким образом: 28.01.2016 | 01:04:33:6092
    в определённый срок по дню, году и месяцу нужно очищать старые записи, установив интервал например через полгода и 5 дней от даты из столбца date_time

    помогите пожалуйста реализовать возможность очистки базы данных ?
     
  2. grimnir

    grimnir Members of Antichat

    Joined:
    23 Apr 2012
    Messages:
    1,114
    Likes Received:
    830
    Reputations:
    231
    Code:
    $days = 5;
    $seconds = time() – $days * 24 * 60 * 60;
    $date = date(‘Y-m-d’, $seconds);
    $query = “DELETE FROM activation WHERE date_time < ‘”.$date.” ’ ”;
    
     
    _________________________
  3. dondy

    dondy Member

    Joined:
    5 Jun 2015
    Messages:
    560
    Likes Received:
    61
    Reputations:
    5
    grimnir, я попробовал - не удаляется запись
    может быть дату и время лучше в разных колонках размещать ?
     
  4. grimnir

    grimnir Members of Antichat

    Joined:
    23 Apr 2012
    Messages:
    1,114
    Likes Received:
    830
    Reputations:
    231
    привет, а код можешь написать сюда?Может дата не в том формате? Я то написал примерный код ,как реализовать,но тут на деле не трудно.
     
    _________________________
  5. dondy

    dondy Member

    Joined:
    5 Jun 2015
    Messages:
    560
    Likes Received:
    61
    Reputations:
    5
    дата формируется вот таким кодом:
    PHP:
    date_default_timezone_set('Europe/Moscow');
    $date_log date("d.m.Y");
    $time_log date("H:i:s");
    $millicekundi microtime(1);
    $mikro substr($millicekundistrrpos($millicekundi'.')+1);
    $date_time $date_log.' | '.$time_log.':'.$mikro;
     
  6. gemaglabin

    gemaglabin Green member

    Joined:
    1 Aug 2006
    Messages:
    772
    Likes Received:
    842
    Reputations:
    1,369
    Если тебе нужны милисекунды, то в Mysql 5.7 появилась их поддержка. В противном случае рекоммендую пользоваться типом данных DateTime
     
  7. Chaak

    Chaak Elder - Старейшина

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    Зачем вообще что-то удалять? Проще не впускать на активации кода по времени действия введённого кода.

    Для того что ты хочешь сделать нужно вести доп индекс минимум по полю времени активации, а удалять лучше через DATE_SUB, чтобы отталкиваться от времени, которое на сервере.

    Если приспичило удалять, то сделай в redis'e или мемкеше ключик с ттл.
     
    banned and dondy like this.