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


Автор: AtaL 18.8.2006, 16:27
Есть достаточно простой скрипт: делает выборку из БД и запихивает получившиеся значения в XML.
Нужно, чтобы данные в хмльных файлах автоматом обновлялись раз в сутки.

Подскажите, пожалуйста, как это сделать?

И, если можно, пример кода: за пхп на работе усадили буквально вчера, "плаваю" страшно.)

Автор: ekodrive 18.8.2006, 17:01
V php dumayu eto ne vozmojno no cherez js vozmojno.Kstati ti proboval cron ?

Автор: AtaL 18.8.2006, 17:15
ПробовалА, с Вашего позволения  smile 

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

Автор: ekodrive 18.8.2006, 17:24
Nu v localhoste ne znayu qde eto naxoditsa nu v unix xostinqax est takoy razdel qde zadaesh ssilku k faylu.U mnoqix unix xostax razdel nazivaetsa planirovshik zadach.

Автор: AtaL 18.8.2006, 17:41
О, спасибо. Поищу)

Автор: AtaL 18.8.2006, 19:41
Подали мысль: поскольку данные собираются для посещаемого сайта, вставить в код главной страницы вызов нужных пхп-шек раз в сутки.

К сожалению, с моим незнанием пхп и эта задача вызывает затруднения.(( Как это можно сделать?

Автор: ewolf 18.8.2006, 23:51
если доступен cron (а узнать это можно у твоего хостера), то нужно добавить ему задачу на запуск скрипта раз в сутки, например так:

1. подать через SSH команду на редактирование задач

crontab -e

2. В редакторе, которые запустится ввести следующее

Код


* 2 * * *  /путь_к_интерпритатору_php /путь_к_твоему_файлу/file.php



(скрипт будет запускаться каждый день в 2 часа ночи

3. нажать ESC и ввести :wq для сохранения данных

Конкретнее - ты можешь узнать данные у своего хостера.

Цитата(AtaL @  18.8.2006,  19:41 Найти цитируемый пост)
Подали мысль: поскольку данные собираются для посещаемого сайта, вставить в код главной страницы вызов нужных пхп-шек раз в сутки.


Можно завести файл (как вариант таблицу в базе данных), куда записывать информацию о том, были ли сегодня уже сделаны изменения или нет.

Пример: 

Код


$today = getdate();

$process = false;

if( file_exists('last_update.txt') )
{
   $last_day = file_get_contents('last_update.txt');
   if( $last_day < $today['mday'] )
      $process = true;
}
else
   $process = true;

$f = fopen('last_update.txt', 'w');
fwrite($f, $today['mday']);
fclose($f);

if( $process )
{
    // Вот здесь обработка твоих данных
}


Ну вот, где-то так, хотя код набирал прямо тут - могут быть ошибки

Автор: Guedda 19.8.2006, 09:26
Хм. Можно с cron не заморачиваться, и ставить кукис на сутки. А потом гонять бесконечным циклом, и проверять, есть ли кукис. Если нет, то скрипт отработал и снова поставил кук.

Автор: Alone 19.8.2006, 10:09
Нет. Самое верное и надежное решение - это крон.

Остальные подходы чреваты побочными эффектами. К примеру, кука: это ж нужно ждать захода пользователя, что бы он инициировал запуск скрипта...

Цитата

Цитата(AtaL @  18.8.2006,  19:41 Найти цитируемый пост)
Подали мысль: поскольку данные собираются для посещаемого сайта, вставить в код главной страницы вызов нужных пхп-шек раз в сутки.


Можно завести файл (как вариант таблицу в базе данных), куда записывать информа...


ага, и поиметь гемор с одновременным обращением к открытому на запись файлу с нескольких клиентов...
Зачем, если в *nix самый правильный планировщик задач, предоставляющий весь необходимый функционал...

Автор: testsergej 19.8.2006, 12:16
cron конечно единственный нормальный способ. Проблема в том, что он на многих хостингах не доступен.
Но к счастью существуют бесплатные сервисы (И как я слышал, абсолютно надёжные). Там крон будет в определонное время вызывать твою страничку.

например: http://www.cronjob.de/

Если с немецким нелады, поищи другие ресурсы smile

Автор: Alone 21.8.2006, 23:34
Да уже с этим попроще... Даже очень smile Я вот среди коммерческих хостеров не встречал пока ни одного, который бы не давал кроном пользоваться smile А многие уже дают полноценный SSH доступ, за что им огормоное человечское спасИбо! smile

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