Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Удаление данных таблицы, каждый день


Автор: Oriander 26.6.2009, 02:10
Здравствуйте, уважаемые пользователи.  smile 
Подскажите как эффективнее реализовать данный сабж.
 smile 

Автор: Рыжий 26.6.2009, 02:39
Oriander, Для этого создан http://ru.wikipedia.org/wiki/Cron. Уверен, он поддерживается твоим хостером. Помести скрипт в определенный файл и передай его крону. Можешь сам - через панель управления хостингом (к примеру...), или попроси хостера, чтобы это сделал за тебя.

Автор: Oriander 26.6.2009, 14:48
Огромное спасибо. Это самый оптимальный вариант?

Автор: Guedda 27.6.2009, 08:37
Цитата(Oriander @  26.6.2009,  15:48 Найти цитируемый пост)
Это самый оптимальный вариант? 

cron - самый оптимальный вариант (и практически единственный, который поддерживается большинством хостеров).

Автор: skyboy 27.6.2009, 09:47
хм, "оптимальность" зависит от условий.
например, если у тебя windows хостинг, то CRON'a там не будет. А будет планировщик windows.
или запуск удаления зависит от сторонних по отношению к сайту факторов(организационных вопросов, например) - как тогда сможет CRON эти факторы определять?
сложно говорить об оптимальности, когда ты:
а) не называешь условий
б) не указываешь на возможные варианты

Автор: Guedda 27.6.2009, 09:57
Цитата(skyboy @  27.6.2009,  10:47 Найти цитируемый пост)
хм, "оптимальность" зависит от условий.
например, если у тебя windows хостинг, то CRON'a там не будет. А будет планировщик windows.
или запуск удаления зависит от сторонних по отношению к сайту факторов(организационных вопросов, например) - как тогда сможет CRON эти факторы определять?
сложно говорить об оптимальности, когда ты:
а) не называешь условий
б) не указываешь на возможные варианты 

Полностью согласен. 

Автор: Oriander 30.6.2009, 22:03
Спасибо, информативно.

Автор: Oriander 23.1.2010, 18:25
А если взять значение времени на сервере и сделать условие:
если время = 0:00, то (запрос на удаление данных из таблицы БД MySQL)
Так покатит?

Автор: Ипатьев 23.1.2010, 18:40
ого. ровно через полгода вопрос встал снова.
а можно поинтересоваться - что это за данные и зачем их удалять?

Автор: Oriander 23.1.2010, 19:16
Если поможете по данному вопросу, то скажу.
А - так... простой массив чисел в БД, который нужно
обновлять ежедневно. Т.е. удалять в 0:00, а по ходу дня
люди туда будут забивать свои свежия данные по простой форме на сайте.
И видеть данные только уже в html(пхп)-таблице
И снова DELETE данных ровно в 0:00 и снова новая информация...
вот такой вот алгоритм.

Меня интересует именно то, как в заданное время можно удалить
записи из таблицы. Все про какой-то КРОН говорят, про планировщики.
А зачем они, если можно взять значение времени у сервера и написать 
условие запроса для удаления данных записей из таблицы БД именно в это время?
Короче, ща именно так и попробую..

Автор: Ипатьев 23.1.2010, 19:25
А что будет, если в 0:00 никто на сайт не зайдет?

Автор: Oriander 23.1.2010, 19:53
Я только что это сам осознал.
Спасибо, подтвердили мои суждения.

Добавлено через 10 минут и 45 секунд
Это все на стороне хостеров управление? 
Или существуют интерфейсы 
для управления им?

Автор: Ипатьев 23.1.2010, 20:22
а почему нельзя просто оставлять данные в таблице?

Автор: Oriander 24.1.2010, 15:02
Нельзя оставлять записи прошлого дня на обозрение
в хтмл(пхп)-таблице. Или можно прописывать условия
вывода по дате? Подскажите алгоритм

Автор: Ипатьев 24.1.2010, 15:16
Вот мне сразу показалось, что вопрос, как это часто бывает, продиктован отстствием знаний, а не реальной необходимостью.

И в уточнении вопроса видно то, о чем я всегда говорю - новички не отличают нормальный подход от ненормального. Оба имеют в их глазах примерно одинаковую ценность. И звучит оно примерно как "Мне надо отрезать палец. Нельзя, чтобы он болел. Или можно мазью помазать?"

"прописывать условия" - это то, ради чего база данных и была придумана. 

Автор: Oriander 24.1.2010, 18:22
Т.е. нужно взять у сервера дату текущую и в запросе
говорить: выводить все записи этого дня? Т.е. в таблице БД есть
время типа **.**.****
Оно его будет сравнивать, как строку символов, а не как целочисленную переменную?
Ну блин можете описать алгоритм? :( Не дойдет до меня

Автор: Ипатьев 24.1.2010, 19:28
Не можем.
Потому что дата должна храниться в формате ****-**-**
После приведения даты к правильному виду (и типу - в mysql есть специальный тип поля для даты) читать про WHERE и NOW()
Сравнения пишутся так же, как в РНР и других языках.



Автор: Oriander 24.1.2010, 20:48
WHERE я знаю, NOW() почитаю, спасибо smile

Автор: Ипатьев 24.1.2010, 21:35
now() как раз не принципиально можно и в РНР текущую дату сформировать. 
Не now(), кстати, а curdate()
Если вы знали про where, то непонятно, в чем тогда вообще вопрос был. этот оператор и нужен для того, чтобы фильтровать записи.

Автор: Oriander 24.1.2010, 22:05
я немного подзабылся просто.

Автор: Oriander 24.1.2010, 22:05
я немного подзабылся просто.
SELECT * FROM dbname WHERE time=NOW()
Как-то так...

Или как? Если имя таблицы = dbname а имя поля = time, ?

Автор: Ипатьев 24.1.2010, 22:22
SELECT * FROM dbname WHERE time=curdate()
если time в формаде гггг-мм-дд

Автор: Oriander 24.1.2010, 23:37
А что делать с часовыми поясами,
если я захочу к примеру купить 
хостинг в америке? Как делать поправку?

Автор: Ипатьев 25.1.2010, 11:27
и в мускуле и в пхп есть настройки часового пояса.
можно и руками отнимать. 

Автор: Oriander 25.1.2010, 21:16
Как же я люблю этот форум, где есть тенденция, 
что люди помогают таким дуракам, как я.
Спасибо что вы есть, ребята. 
Тему помечаю решенной.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)