Запуск одной копии скрипта

Статус
В этой теме нельзя размещать новые ответы.

nestbg

Читатель
Регистрация
29 Мар 2007
Сообщения
62
Реакции
7
Как сделать так, чтобы в каждый конкретный момент была запущена одна копия скрипта, т.е. защиту от многократного запуска ?

Имеется вариант в тушке скрипта обновлять в каком-нибудь файлике дату (или дату самого файлика), а при начале работы скрипта сравнивать её с текущей. Если разошлись секунд на 10, то делаем вывод "скрипт не запущен, работаем дальше", иначе "скрипт запущен, нам делать нечего, вываливаемся". Соответственно сам скрипт дёргать кроном раз в 2 секунды.

Но это топорное решение. Есть какие-то другие способы ? :nezn:
 
:) вообще конечно тупое решение, но это так, навскидку - скрипт открывает какой-то файл и держит его. Если кто-то пытается запустить наш скрипт, он проверяет, не заблокирован ли этот файлик - если да, прекращаем работу ( die(); )
 
В принципе нормальное решение. Но будет ли оно работать под фряхой, линуксом ? Под виндой можно открыть монопольный доступ, а вот с фряхой пока не сталкивался...
 
я делал просто - создавал файл "yes", а потом в скрипте проверял - если файл существует - die. если нет - создать и начать работать. в конце работы - удалить файл :)
и кроном ты можешь дергать скрипт только раз в минуту :)
 
В принципе нормальное решение. Но будет ли оно работать под фряхой, линуксом ? Под виндой можно открыть монопольный доступ, а вот с фряхой пока не сталкивался...
вот и будет причина познакомится с ней по-ближе :) эксперимент ведь провести не так трудно...
 
Всё хорошо, только если скрипт склеит ласты или вылетит по таймауту, то файл останется. В следующий раз скрипт уже не запустится.

Можно скомбинировать с записью в него даты :D
 
на этот счет у меня дальше была проверка даты. точнее разницы только в минутах (параметр i для date), т.к. скрипт запускается каждую минуту - можно проверять - если разница, к примеру, больше 5, то удалять файл :)
 
А если копать в сторону запущенных процессов и выполняемых комманд? :)

Работать может и будет, но так делать нельзя. Т.к. придётся запускать из пхп внешнюю команду, забирать результат. А это имхо более ресурсоёмко, чем пхпшные touch+filemtime(не забывая про clearstatcache).
В принципе уже реализовал.
 
Всё хорошо, только если скрипт склеит ласты или вылетит по таймауту, то файл останется. В следующий раз скрипт уже не запустится.

Можно скомбинировать с записью в него даты :D
Тайм-аут в кроне?
А что-бы ласты не слеивал нужно писать стабильниые скрипты.
просто создавать и удалять файл - оптимальный вариант.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху