|
|
|
| Добрый день, не подскажите как реализовать такую штуку:
В базу записывается, допустим число 60 и нужно, чтобы автоматически каждый день от него отнималось -1 и результат обратно записывался в базу. Например как на авито.
Это через крон делается? | |
|
|
|
|
|
|
|
для: ladan
(31.01.2012 в 21:51)
| | все, разобрался, крон рулит))) | |
|
|
|
|
|
|
|
для: ladan
(31.01.2012 в 21:51)
| | подробнее опишите задачу, что за число, что за отчет, и что и когда именно должно случиться по истечении этого времени
скорее всего задача достаточно банальна и вам крон абсолютно не нужен, если это конечно не старт баллистической ракеты | |
|
|
|
|
|
|
|
для: Valick
(01.02.2012 в 01:05)
| | вообщем люди размещают свое объявление и в базу записывается число "60"(2 месяца) и ровно через сутки у всех объявлений в базе должно отниматься -1, как только в какой-то записи будет число "0", объявление удаляется.
через крон все получилось, через каждые 24 часа к обращению к скрипту и делает свои дела :) | |
|
|
|
|
|
|
|
для: ladan
(01.02.2012 в 01:51)
| | допустим я добавил объявление в 17:00, а крон например делает свеё дело в 00:00
в таком случае объявление либо висит дольше, либо удаляется раньше, я понимаю что это не столь критично в данном случае, но все таки....
обычно запрос на удаление просроченных объявлений посылается перед запросом выборки, точность в таком случае до +/- секунды | |
|
|
|
|
|
|
|
для: ladan
(01.02.2012 в 01:51)
| | А не вариант заносить в БД дату размещения объявления и выводить:
SELECT * FROM table WHERE date > NOW() - INTERVAL 60 DAYS
| ну или как-то так... Синтаксис с ходу не помню. | |
|
|
|
|
|
|
|
для: Sfinks
(01.02.2012 в 02:10)
| | А не вариант заносить в БД дату размещения объявления
это на столько прописная истина, что я об этом даже упомянуть забыл
а без этого уточнения мой ответ действительно несколько корявый | |
|
|
|
|
|
|
|
для: Sfinks
(01.02.2012 в 02:10)
| | про такой вариант не знал, но нужно чтоб еще у каждого объявления выводился остаток дней, через который оно удаляется.
То есть придется каждый раз обновлять старую дату на текущую, когда условие выполнится(интервал в 1 день), чтоб потом от новом даты отталкиваться.. и от текущего дня отнимать -1 и обновлять бд.
Ну вытаскиваем все просроченные даты в 1 день, а если обращения к скрипту не будет дня 3(никто на сайт не зайдет), то все равно, в базу занесется число( $n-1), хотя фактически 3 дня прошло.
Может все-таки крон оставить? :) СТабильно все делает, но может удалить объяву либо раньше, либо позже на 1 день, как уточнил Valick. Хотя может это не так критично :) | |
|
|
|
|
|
|
|
для: ladan
(01.02.2012 в 13:21)
| | > у каждого объявления выводился остаток дней
В чем проблема? Есть дата подачи, есть текущая дата. Вычислите и выведите.
> То есть придется каждый раз обновлять старую дату на текущую
Дату вам в этом случае придется обновлять только если человек продлит объявление
> никто на сайт не зайдет
3 дня? Зачем на него тогда подавать объявление? Тогда не важно будет оно там 60 дней висеть или 62.
> Может все-таки крон оставить
Крону можно оставить удаление уже просроченных объявлений, чтоб база не загаживалась. | |
|
|
|
|
|
|
|
для: Sfinks
(01.02.2012 в 13:35)
| | спасибо, буду разбираться :) | |
|
|
|
|
|
|
|
для: Sfinks
(01.02.2012 в 13:35)
| | ну ненужен тут крон, как не крути....
ну если очень хочеться, то можно
[поправлено модератором] | |
|
|
|