Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: обратный отсчет
 
 автор: ladan   (31.01.2012 в 21:51)   письмо автору
 
 

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

В базу записывается, допустим число 60 и нужно, чтобы автоматически каждый день от него отнималось -1 и результат обратно записывался в базу. Например как на авито.

Это через крон делается?

  Ответить  
 
 автор: ladan   (31.01.2012 в 22:07)   письмо автору
 
   для: ladan   (31.01.2012 в 21:51)
 

все, разобрался, крон рулит)))

  Ответить  
 
 автор: Valick   (01.02.2012 в 01:05)   письмо автору
 
   для: ladan   (31.01.2012 в 21:51)
 

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

  Ответить  
 
 автор: ladan   (01.02.2012 в 01:51)   письмо автору
 
   для: Valick   (01.02.2012 в 01:05)
 

вообщем люди размещают свое объявление и в базу записывается число "60"(2 месяца) и ровно через сутки у всех объявлений в базе должно отниматься -1, как только в какой-то записи будет число "0", объявление удаляется.

через крон все получилось, через каждые 24 часа к обращению к скрипту и делает свои дела :)

  Ответить  
 
 автор: Valick   (01.02.2012 в 02:01)   письмо автору
 
   для: ladan   (01.02.2012 в 01:51)
 

допустим я добавил объявление в 17:00, а крон например делает свеё дело в 00:00
в таком случае объявление либо висит дольше, либо удаляется раньше, я понимаю что это не столь критично в данном случае, но все таки....
обычно запрос на удаление просроченных объявлений посылается перед запросом выборки, точность в таком случае до +/- секунды

  Ответить  
 
 автор: Sfinks   (01.02.2012 в 02:10)   письмо автору
 
   для: ladan   (01.02.2012 в 01:51)
 

А не вариант заносить в БД дату размещения объявления и выводить:
SELECT * FROM table WHERE date > NOW() - INTERVAL 60 DAYS
ну или как-то так... Синтаксис с ходу не помню.

  Ответить  
 
 автор: Valick   (01.02.2012 в 07:39)   письмо автору
 
   для: Sfinks   (01.02.2012 в 02:10)
 

А не вариант заносить в БД дату размещения объявления
это на столько прописная истина, что я об этом даже упомянуть забыл
а без этого уточнения мой ответ действительно несколько корявый

  Ответить  
 
 автор: ladan   (01.02.2012 в 13:21)   письмо автору
 
   для: Sfinks   (01.02.2012 в 02:10)
 

про такой вариант не знал, но нужно чтоб еще у каждого объявления выводился остаток дней, через который оно удаляется.

То есть придется каждый раз обновлять старую дату на текущую, когда условие выполнится(интервал в 1 день), чтоб потом от новом даты отталкиваться.. и от текущего дня отнимать -1 и обновлять бд.

Ну вытаскиваем все просроченные даты в 1 день, а если обращения к скрипту не будет дня 3(никто на сайт не зайдет), то все равно, в базу занесется число( $n-1), хотя фактически 3 дня прошло.

Может все-таки крон оставить? :) СТабильно все делает, но может удалить объяву либо раньше, либо позже на 1 день, как уточнил Valick. Хотя может это не так критично :)

  Ответить  
 
 автор: Sfinks   (01.02.2012 в 13:35)   письмо автору
 
   для: ladan   (01.02.2012 в 13:21)
 

> у каждого объявления выводился остаток дней
В чем проблема? Есть дата подачи, есть текущая дата. Вычислите и выведите.

> То есть придется каждый раз обновлять старую дату на текущую
Дату вам в этом случае придется обновлять только если человек продлит объявление

> никто на сайт не зайдет
3 дня? Зачем на него тогда подавать объявление? Тогда не важно будет оно там 60 дней висеть или 62.

> Может все-таки крон оставить
Крону можно оставить удаление уже просроченных объявлений, чтоб база не загаживалась.

  Ответить  
 
 автор: ladan   (01.02.2012 в 13:44)   письмо автору
 
   для: Sfinks   (01.02.2012 в 13:35)
 

спасибо, буду разбираться :)

  Ответить  
 
 автор: Valick   (01.02.2012 в 13:52)   письмо автору
 
   для: Sfinks   (01.02.2012 в 13:35)
 

ну ненужен тут крон, как не крути....
ну если очень хочеться, то можно

[поправлено модератором]

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования