Мониторинг каталога, а затем запустить скрипт PHP - PullRequest
2 голосов
/ 17 ноября 2011

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

Я видел, что есть watch, но я не уверен, как именно его использовать.

Я знаю, watch -d ls -l будет отслеживать изменения в списке файлов, но как мне передать измененный файл в скрипт php? Кроме того, как мне найти файл, который не новый, но обновленный?

Можно ли запустить это вместе с файлом конфигурации (какие каталоги и т. Д.) Для легкой настройки для конечных пользователей?

Ответы [ 2 ]

2 голосов
/ 17 ноября 2011

Вы можете использовать inotifywait (из inotify-tools) в скрипте bash.

while read file; do
    php some_script.php "$file"
done < inotifywait -e create,delete,move,modify -m . --format "%w%f" $dir

%w%f даст вам путь к файлу.Если вам также нужно событие, добавьте %e.Дополнительные параметры формата и имена событий см. На странице руководства.

Другая возможность - incron, но для этого требуется системный демон.

0 голосов
/ 17 ноября 2011

Каждый раз, когда я использую часы, кажется, что они используют текущую консоль / tty. Вероятно, не лучший инструмент для подключения к PHP-скрипту.

Один из подходов, который я бы выбрал, - это заставить php-скрипт составить список каталогов, сохранить в БД, такой как SQLite, и т. Д., Затем сравнить различия, и, поскольку это php-скрипт, он может передавать информацию другому php. сценарии или включите оставшуюся часть сценария. Вы можете сделать так, чтобы cron запустил ваш php-скрипт.

...