Автор Тема: скрипт работает только один раз в день  (Прочитано 5821 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Lion

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 474
  • +0/-0
  • 0
    • Просмотр профиля
Приведите пример, как можно сделать что бы скрипт работал только один раз в день.

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
скрипт работает только один раз в день
« Ответ #1 : 09 Декабря 2001, 20:46:31 »
Проверяешь был ли запущен сегодня скрипт, если нет - выполняешь его и записываешь в БД дату выполнения скрипта.
Вот вроде бы и все.
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Oak

  • Дерево
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1481
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
скрипт работает только один раз в день
« Ответ #2 : 09 Декабря 2001, 21:58:36 »
Лучше наоборот - сначала записывать , а потом скрипт выполнять.....
 А то может несколько раз выполнится :)

 Там про Flock вспоминали - так здесь это тоже в тему - надо
одноразовое выполнение.
[основной броузер - SeaMonkey] Netscape Communicator 4 - is the best :) // see sources

Оффлайн Lion

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 474
  • +0/-0
  • 0
    • Просмотр профиля
скрипт работает только один раз в день
« Ответ #3 : 09 Декабря 2001, 22:02:27 »
Цитировать
Проверяешь был ли запущен сегодня скрипт

вот этот момент особенно интересует, примерчик хочеться...

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
скрипт работает только один раз в день
« Ответ #4 : 09 Декабря 2001, 22:18:17 »
В БД (или в файл) записывается дата последнего запуска. А в скрипте  вытаскиваешь дату и сравниваешь с сегодняшним днем.

Цитировать
Лучше наоборот - сначала записывать , а потом скрипт выполнять.....
Да, так наверное лучше.
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Oak

  • Дерево
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1481
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
touch
« Ответ #5 : 09 Декабря 2001, 22:22:47 »
Есть такая класная функция - touch, она в разделе операций с файлами...


 2 
if ( touch($FileName) ) {
 
3   print "$FileName modification time has been changed to todays date and time";
 
} else {
 
5   print "Sorry Could Not change modification time of $FileName";
 
}


Ну а "filemtime -- Get file modification time"

Только чтобы было совсем правильно - надо
1) смотришь время $tm=filemtime("timestamp");
2) сравниваешь $tm < time() + сутки (в секундах)
если нет - уходим (end)
если да
3.1) rename("timestamp","timestamp2") - чтобы никто другой не поменял. (проверяешь, без ошибок ли это сделано)
Если ошибка - значет кто-то другой уже это делает, а этому скрипту не надо - уходишь. (end)
Если получилось, значит этот скрипт и должен делать всю грязную работу.... (3.2)
3.2) делаем touch("timestamp2");
3.3) ложим файлик назад  rename("timestamp2","timestamp")
3.4) спокойно отрабатываем, что надо

end)

Да, если твой скриптик может недоделать это доконца и кануть влету, то сделай то же самое
для конца операции (3.5) - только файлик какой-то другой "script.completed".
И проверяй так же, только период несколько больше суток (а вдруг скрипт просто медленно работает)

Ну и файлики эти должны сущутвовать - создай их, и чтобы скрипт мог писать в этот каталог.
[основной броузер - SeaMonkey] Netscape Communicator 4 - is the best :) // see sources

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28