- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Есть задача.
скрипт запускается по крону, как отследить выполнился ли скрипт или нет, если выполнился то крон не запускает новый процесс, если скрипт отработал то запускаем новый процесс.
Обработку процесса ограничить на 10 минут к примеру, затем убиваем и запускаем новый процесс.
пример
Еще можно в базе иметь поле например in и out
если in стало меньше out на указаноое время то выполняем новый процесс убив старый.
так у вас же свой собственный скрипт? нужно изучить блокировки на файлах и в своем скрипте их реализовать.
блокировки выгоднее прочих педальных методов тем, что при внезапном ошибочном завершении скрипта блокировка снимается автоматически.
так у вас же свой собственный скрипт? нужно изучить блокировки на файлах и в своем скрипте их реализовать.
блокировки выгоднее прочих педальных методов тем, что при внезапном ошибочном завершении скрипта блокировка снимается автоматически.
Первый скрипт собственный писался мне прогером, но с ним надо разбираться.
Второй мой, блокировка работает по времени но мне кажется что это много лишнего там.
самое простое как мне кажется это установить принудительно лимит
error_reporting(0);
set_time_limit(600); вырубаем скрипт через 600 сек.
далее нужно запускать крон и проверять процесс файла или дескриптор, как правильнее будет.
и если файл еще выполняется то крон выполняет то что попадает в if если процесс умер то else или true false.
Попробую поизвращатся позднее, щас жариже ужас. :D
чего проверять? вы бредите
http://en.wikipedia.org/wiki/Lock_%28computer_science%29
http://www.kurepin.ru/php/zametki/flock/
впрочем, для cron с его минимальным временем запуска в 1 минуту, хватает совсем простого фокуса - создание файла-индикатора запуска. по завершению процесс удаляет за собой файл. Это допустимо надежно работает.
создание файла-индикатора запуска.
+ его надо держать локнутым
и при старте проверять лок, тем самым узнавая, работает ли предыдущая копия :)
dkameleon, можно, но нам такие опытные разработчики не по карману.
наверно надо гугль посмотреть, второй же ресурс по запросу "php lockfile" выдал http://www.ajohnstone.com/archives/lock-files-in-php-bash/ , да и остальные перспективные.
Можно создавать к примеру start.txt файл, если он присутствует то завершать работу скрипта, а проверку вначале где то поставить...
ЗЫ: если вообще его нельзя запускать, то сделать 2й скрипт который будет делать проверку и потом уже запускать основной скрипт...
мемкеш или файл. файл удобней тем, что вы можете отслеживать время работы скрипта при помощи функции filemtime()
Создаем файл task_lock при инициализации скрипта, далее в скрипте вы сможете проверить его рантайм (в цикле, например) time() - filemtime('task_lock') + ini_set('max_execution_time', ваше значение) (об этом уже говорилось).
Также, вам необходимо сделать функцию удаления вашего lock файла и вызывать ее на shutdown вот так: register_shutdown_function('my_shutdown')
функция my_shutdown будет выглядеть как то так:
если файл существует, мы просто падаем die('locker is enabled');
Можно через мемкеш. Принцип такой же.
какое по карману - не по карману? У вас задача на 10 минут - не надо никтому платить за подобные задачи.
ну в принципе решается все элементарным pid на сколько я понял...
или чем он не подходит?
So1, а вот как раз такую наивность я и имел ввиду.
опытный разработчик знает, что между проверкой отсутствия файла и созданием этого файла может пройти какое-то время и два одновременно запущенных скрипта не заметят друг друга.
Блокировка эту проблему исключает. Хотя, применительно к cron, запускаемому каждую минуту такое почти невозможно.