PHP & MySQL Срок хранения объявления
Делаю доску объявления на PHP в ней все записи будут храниться в базе данных MySqL! Как мне сделать так, чтобы когда человек вводил объявление через форму мог указать срок хранения объявления! И чтобы бы все это работало! Как прописать условие, допустим объявление подано 2.12.07 а удалить его из базы данных 2.01.08
Создаёшь с записи поле типа datetime или timestamp и заносишь туда дату публикации. Далее по крону запускаешь скрипт раз в сутки и удаяешь все записи, разница по дате у которых больше заданого времени.
Че за cron что это такое, ты не можешь просто написать готовый php скрипт например чтобы запись с базы удалилась через 30 дней
Гугл в помощь
>>ты не можешь просто написать готовый php
Конечно могу, НО:
1. Тема фриланса ниже.
2. Денег сколько?
Можно и без крона. В скрипте, который выводит объявления/разделы, добавить в самом начале удаление устаревших элементов.
Это лишний и не нужный запрос к БД. При этом постоянно. Можно конечно (частенько применяется в кешировании) использовать случайность (if(mt_rand(0, 1000) = 10) {делаем запрос}), но это бред полный в данном контексте.
Цитата: shaelf
Это лишний и не нужный запрос к БД. При этом постоянно. Можно конечно (частенько применяется в кешировании) использовать случайность (if(mt_rand(0, 1000) = 10) {делаем запрос}), но это бред полный в данном контексте.
Пусть автор сам решает. Спорить не буду. В хорошем продукте должна быть поддержка обоих этих решений, на выбор пользователя.
Крон, крон и ещё раз крон. Щас делаю проект на друпале, тоже самое надо сделать для новостей. Там есть модуль, работающий от крона и публикует/убиирает материалы когда надо.
Про bitrix слышал? Там схожие задачи решаются без крона. Но опять же, повторюсь, все зависит от ситуации.
При желании, можно и головой об стенку биться. Есть понятие такое, рациональность называется... А что касается битрикса... Ты вкурсе скока он ресурсов кушает? 6 они может и разогнали, но ИМХО, что можно сделать через бинарики и это удобно, нельзя делать скриптами.
Цитата: shaelf
При желании, можно и головой об стенку биться. Есть понятие такое, рациональность называется... А что касается битрикса... Ты вкурсе скока он ресурсов кушает?
Там подобные задачи решаются с помощью т.н. агентов. И вызываются они когда нужно, а не каждый раз. Я в курсе сколько ресурсов он кушает, и, по-моему, в случае битрикса данное решение самое рациональное.
Цитата: shaelf
ИМХО, что можно сделать через бинарики и это удобно, нельзя делать скриптами.
Бинарники то тут при чем? Бинарник cron'а только запускает скрипты. А саму работу делает скрипт.
Дана задача - удалять все записи, которым больше чем nn времени (в данном случае пусть это будет 10 дней). Решения:
1. В каждой работе скрипта запускать sql код "DELETE FROM....."
2. В каждой работе скрипта запускать mt_rand() (см выше)
3. На крон повесить запускать некую очистку раз в сутки.
Если есть ещё решение ДАННОЙ задачи, то прошу в студию. Тут сходу видно, что самым рациональным является 3 вариант.
>>Бинарники то тут при чем? Бинарник cron'а только запускает скрипты.
Ты абсолютно прав, просто, если без крона, то нам придётся запихивать дополнительную, ненужную логику в скрипт
PS Можно извратится со временем (time) ещё, но это опять ИМХО излишняя логика.
Цитата: shaelf
Либо я чего не понимаю, либо ты отошёл от контекста задачи.
Дана задача - удалять все записи, которым больше чем nn времени (в данном случае пусть это будет 10 дней). Решения:
1. В каждой работе скрипта запускать sql код "DELETE FROM....."
2. В каждой работе скрипта запускать mt_rand() (см выше)
3. На крон повесить запускать некую очистку раз в сутки.
Если есть ещё решение ДАННОЙ задачи, то прошу в студию. Тут сходу видно, что самым рациональным является 3 вариант.
>>Бинарники то тут при чем? Бинарник cron'а только запускает скрипты.
Ты абсолютно прав, просто, если без крона, то нам придётся запихивать дополнительную, ненужную логику в скрипт
PS Можно извратится со временем (time) ещё, но это опять ИМХО излишняя логика.
Дана задача - удалять все записи, которым больше чем nn времени (в данном случае пусть это будет 10 дней). Решения:
1. В каждой работе скрипта запускать sql код "DELETE FROM....."
2. В каждой работе скрипта запускать mt_rand() (см выше)
3. На крон повесить запускать некую очистку раз в сутки.
Если есть ещё решение ДАННОЙ задачи, то прошу в студию. Тут сходу видно, что самым рациональным является 3 вариант.
>>Бинарники то тут при чем? Бинарник cron'а только запускает скрипты.
Ты абсолютно прав, просто, если без крона, то нам придётся запихивать дополнительную, ненужную логику в скрипт
PS Можно извратится со временем (time) ещё, но это опять ИМХО излишняя логика.
Я говорю, что все зависит от конкретной задачи и тербований к ПО. В битриксе агенты - универсальное решение позволяющее запускать любую логику, связанную с определнными интервалами времени либо
каждый раз. Можно сказать что это 4-й (гибридный) вариант.