отработка завершения консольного скрипта
Задача следующая: есть консольный скрипт, запускаемый по расписанию, занимается обработкой поступающих файлов. В связи с тем, что файлов может быть много, в начале работы проверяется наличие .lock файла, если файл присутствует --- выход, если отсутствует --- файл пишется, а в конце работы стирается. Сделано это, понятное дело, для того, чтобы две копии скрипта не пытались обрабатывать одни и те же файлы.
Теперь проблема: уже пару раз была ситуация, когда машину, где работает скрипт, перегружали (не reset'ом, нормально). При этом остаётся .lock файл, и после перезагрузки скрипт работать отказывается.
Соответственно возникла задача, чтобы при принудительном завершении скрипта стирался .lock-файл. Но: register_shutdown_function() в консоли работает только если скрипт доработал до конца, при прерывании по Ctrl+C или закрывании окошка функция не отрабатывает. Можно было бы использовать расширение pcntl с его pcntl_signal(), но оно не работает под виндой, а скрипт работает как раз под ней. :[
Правильно ли я понимаю, что под виндой в консоли перехватить закрытие скрипта невозможно, или я всё-таки что-то упустил?
(Запасной вариант, понятное дело, проверять возраст .lock-файла и стирать его, если он слишком старый)
Задача следующая: есть консольный скрипт, запускаемый по расписанию, занимается обработкой поступающих файлов. В связи с тем, что файлов может быть много, в начале работы проверяется наличие .lock файла, если файл присутствует --- выход, если отсутствует --- файл пишется, а в конце работы стирается. Сделано это, понятное дело, для того, чтобы две копии скрипта не пытались обрабатывать одни и те же файлы.
Теперь проблема: уже пару раз была ситуация, когда машину, где работает скрипт, перегружали (не reset'ом, нормально). При этом остаётся .lock файл, и после перезагрузки скрипт работать отказывается.
Соответственно возникла задача, чтобы при принудительном завершении скрипта стирался .lock-файл. Но: register_shutdown_function() в консоли работает только если скрипт доработал до конца, при прерывании по Ctrl+C или закрывании окошка функция не отрабатывает. Можно было бы использовать расширение pcntl с его pcntl_signal(), но оно не работает под виндой, а скрипт работает как раз под ней. :[
Правильно ли я понимаю, что под виндой в консоли перехватить закрытие скрипта невозможно, или я всё-таки что-то упустил?
(Запасной вариант, понятное дело, проверять возраст .lock-файла и стирать его, если он слишком старый)