автоматически обновлять строку после определенного времени

Я сделал сайт, на котором мои пользователи могут размещать рекламу.

Теперь я хочу автоматически изменить одну строку в своей таблице объявлений через определенное время.

Например: скажем, что мой пользователь загружает / публикует AD, и до того, как он опубликовал его, он получает выбор, хочет ли он сохранить его в течение 8 дней или 16 дней.

Должен ли я проверить это с помощью cron или есть лучший способ сделать это?

Видимый называется «активным» БД, – tinyint 1 или 0.

заранее спасибо,

Related of "автоматически обновлять строку после определенного времени"

У вас есть 2 варианта управления этим как в зависимости от выбранного времени.

  1. Сохраните время истечения срока действия с объявлением и включите истечение срока действия> СЕЙЧАС (); в любых запросах на выбор объявлений (этот тип отрицает требование для «активного» поля.

  2. используйте событие для управления этим.

Метод 1 может потребовать некоторого администратора для «очистки рекламы».

Метод 2 – вы еще не можете создавать события в процедуре (в прошлый раз, когда я проверял), но они позволяют вам устанавливать и забывать такие административные функции, не выполняя другие проверки и что-то не.

Каждое событие должно иметь уникальное имя, иначе вы убьете уже указанное событие …

пример:

<?php $qry = "insert into ads values ( 'x', 'y', 'z' );"; /* db execute qry (pdo or what ever) */ $adId = // retriev a unique reference for ad. $days = $_POST['expire'] == 16 ? 16 : 8; $qry = "CREATE EVENT updateAd_".$adId." ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL ".$days." DAY ON COMPLETION NOT PRESERVE DO update ads set active = 'false' where ad_id = ".$adId.";"; // db execute qry (pdo or what ever); ?> 

Событие хранится в базе данных mysql, а не в вашем собственном, поэтому вам нужны некоторые разрешения уровня администратора для реализации.

Можете ли вы сохранить дату истечения срока? Итак, создайте столбец, в котором вы храните дату. Когда пользователь создает объявление, затем подсчитайте дату через 8 дней и сохраните его в столбце. Затем в вашем запросе, чтобы вытащить объявление, вы можете ограничить те объявления, срок годности которых еще не наступил.

Сохраните дату истечения срока действия. Затем используйте запрос:

 select * from table where Expiration_date>now(); 

Если вы используете PHP, проверьте функцию strtotime . Вы можете использовать его для создания своей даты так:

 $expiration = date("Ymd H:i:s",strtotime('+ '.$num.'days')); 

Если у вас поле «Expiration_date», поле «active» не требуется. Заявление

 select Expiration_date>now() as active from table 

будет эквивалентным.