Риск запуска cronjob каждую минуту

0

У меня есть php-скрипт, предназначенный для проверки определенной папки для файлов xml, а затем импортирования информации из каждого файла в базу данных MySQL.

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

У меня есть инструкция if, которая проверяет, существуют ли файлы, и только запускает код, если они это делают, иначе "Нет файлов" будет эхом.

Я хотел бы знать, есть ли риск для того, чтобы этот запуск постоянно, будут ли чрезмерные ресурсы использоваться? так далее

Теги:
cron

1 ответ

2

Там действительно ничего плохого в управлении процессом каждую минуту... кроме обычных ловушек [которые я включаю в способы смягчения]. Я хочу сказать, что на настоящий момент действительно очень много времени для современного компьютера. Если вам не хватает циклов, несколько дополнительных системных вызовов в минуту - это неправильное место для просмотра.

  • Ошибка № 1 заключается в том, что что-то идет "неправильно" со сценарием и по какой-то причине оно не выходит. Признак: сбой коробки, поскольку он больше не может создавать процессы и/или открывать дескриптор файла и т.д.

Как решить: заставить скрипт захватить исключительную блокировку файла. Вы могли бы написать свой pid в файл, но этот взломанный. Если вы не можете захватить исключительную блокировку, выполняется предыдущая версия, поэтому вы должны просто выйти.

Здесь PHP-интерфейс для flock(): PHP flock()

  • ловушка № 2: это действительно должен быть демон.

Если что-то нужно "делать все время", возможно, это должно быть действительно "сделано все время". Вы можете использовать рецепт блокировки файлов, чтобы убедиться, что ваш скрипт остается включенным, или вы можете использовать что-то вроде monit для его запуска. Но вы также можете просто застраховать его, используя cron и блокировку файлов.

  • Pitfall # 3: вы конвертируете в демона, но там есть утечка памяти, и вещь просто продолжает расширяться, как девушка в Вилли Вонке, на слишком большом количестве черники. Признак: ошибка OOM, обмен и т.д. В конце концов, это PHP.

Решение: выйдите после 1000 [или некоторых #] итераций, а затем используйте cron и модель блокировки файлов, чтобы начать новую версию [или monit или эквивалент].

Ещё вопросы

Сообщество Overcoder
Наверх
Меню