Консультация № 97957
10.08.2007, 15:55
0.00 руб.
0 4 4
Здравствуйте!
Есть дилетантский вопрос. Имеется на индексной странице скрипт, который должен выполняться, как бы, автоматически, т.е. сравнивает текущую дату с датой записи из БД и при совпадении запись удаляется. Вопрос такой: скрипт будет исполняться только в случае, если кто-то обратится к этой странице? А если допустить, что страницу втечение месяца никто не открывал, то за это время скрипт ни разу не запуститься? Может быть, есть средства для автоматического ежедневного запуска скрипта?
И еще вопрос, вернее, просьба о помощи. Помогите с примером скрипта, который преобразует старую дату с увеличением на 7 дней, например, 2007-07-29 + 7 дней, чтобы не получилось 2007-07-36, а вышло 2007-08-05.

Обсуждение

Неизвестный
10.08.2007, 16:07
общий
это ответ
Здравствуйте, VicBar!

1) Это тебе нужен cron. Сейчас практически все хостеры предоставляют доступ к нему. Чаще всего скрипт добавляется в cron через панель управления хостингом - там должен быть соответсвующий пункт, где задаются все параметры. Но насколько я понимаю, для тебя по сути не критичен запуск именно с определенным интервалом. Ты можешь сделать скрипт, который будет инклудится во все скрипты твоего сайта. Как-только кто-то обратиться к любой странице твоего сайта - временные записи из БД удалятся. Если на сайт месяц никто не заходит - запросы к базе тоже лишний раз не делаются. И наличие доступа к крону опять же не критично в данном случае

2) date("Y-m-d", mktime(0, 0, 0, date("m") , date("d")+7, date("Y")));
Неизвестный
10.08.2007, 16:20
общий
это ответ
Здравствуйте, VicBar!
Запускать скрипт по времени поможет cron, часто хостинг компании предоставляют доступ на внесение 1-2 записей.

Скрипт для увеличения даты:
два пути. либо прописывать сколько дней в каждом месяце.. в зависимости от этого менять месяц на днях с 28 до 31. либо перевести дату в UNIXTIME, добавить к ней количество секунд равное 7 дням и вернуть обратно дату, делается так:

Приложение:
<?$date = date( ‘Y-m-d‘, time());echo $date."
";echo plus_date($date, 30);//$date - дата//$plus - сколкьо дней прибавитьfunction plus_date($date, $plus) {$timestamp = strtotime($date);return date( ‘Y-m-d‘, ($timestamp+$plus*24*60*60));}?>
Неизвестный
10.08.2007, 17:32
общий
это ответ
Здравствуйте, VicBar!

За это отвечает ОС:
есть специальные сервисы которые запускают скрипты в заданое время.
для Linux: Cron
для Windows: Cronw http://cronw.sourceforge.net/
Неизвестный
10.08.2007, 21:42
общий
это ответ
Здравствуйте, VicBar!
1. Да. Скрипт будет исполнятся только после того как кто нибудь зайдет на страничку которая содержит его. В случае если Вы хотите чтобы он запускался ежедневно, то я бы посоветовал Вам вставить в индексную/главную страничку вызов этого скрипта.
2. Могу предложить следующий вариант:
$days = 7*24*60*60;// 7 дней в секундах
$currDate = int gmmktime ( [int hour [, int minute [, int second [, int month [, int day [, int year [, int is_dst]]]]]]]);// указываете Вашу дату
$currDate += $days;// прибавляем 7 дней
$result = date("‘h-i-s j-m-y", $currDate);// преобразуем обратно, теперь в переменной $result находится дата +7 дней

Форма ответа