У меня есть php-скрипт, предназначенный для проверки определенной папки для файлов xml, а затем импортирования информации из каждого файла в базу данных MySQL.
Я хотел бы настроить cronjob для запуска каждую минуту, чтобы добавить новые файлы, которые будут практически мгновенно импортированы без необходимости вручную запускать скрипт и запускать скрипт.
У меня есть инструкция if, которая проверяет, существуют ли файлы, и только запускает код, если они это делают, иначе "Нет файлов" будет эхом.
Я хотел бы знать, есть ли риск для того, чтобы этот запуск постоянно, будут ли чрезмерные ресурсы использоваться? так далее
Там действительно ничего плохого в управлении процессом каждую минуту... кроме обычных ловушек [которые я включаю в способы смягчения]. Я хочу сказать, что на настоящий момент действительно очень много времени для современного компьютера. Если вам не хватает циклов, несколько дополнительных системных вызовов в минуту - это неправильное место для просмотра.
Как решить: заставить скрипт захватить исключительную блокировку файла. Вы могли бы написать свой pid в файл, но этот взломанный. Если вы не можете захватить исключительную блокировку, выполняется предыдущая версия, поэтому вы должны просто выйти.
Здесь PHP-интерфейс для flock(): PHP flock()
Если что-то нужно "делать все время", возможно, это должно быть действительно "сделано все время". Вы можете использовать рецепт блокировки файлов, чтобы убедиться, что ваш скрипт остается включенным, или вы можете использовать что-то вроде monit для его запуска. Но вы также можете просто застраховать его, используя cron и блокировку файлов.
Решение: выйдите после 1000 [или некоторых #] итераций, а затем используйте cron и модель блокировки файлов, чтобы начать новую версию [или monit или эквивалент].