Использование inotifywait вместе с PHP-скриптом, который реагирует на изменение файла

Мне нужно отслеживать определенную структуру каталогов для изменений (фактически только для добавления новых файлов), и при каждом изменении вызывать скрипт php, который обрабатывает изменение (фактически берет новый файл и делает с ним дополнительные действия). То, что я достиг до сих пор, заключается в том, что у меня есть крошечный PHP-файл, который принимает параметры и обрабатывает действия, и я также установил запуск inotifywait, который отслеживает структуру каталогов, в которой я нуждаюсь.

Trigger:

inotifywait -e MOVED_TO /var/data/nextcloud/data/ --recursive --monitor

Обработчик:

$file = __DIR__.'/filechanges.txt'; // Open the file to get existing content $current = file_get_contents($file); // Append a new file to the file $current .= print_r($argv, true); // Write the contents back to the file file_put_contents($file, $current);

Как связать их вместе, зная, что обработка PHP-скрипта может занять некоторое время, и я не хочу блокировать скрипт мониторинга все это время?

Насколько я знаю, я мог бы использовать pipe и отправить inotifywait в PHP stdin и захватить его как

$line = fgets(STDIN);

, но я понимаю, что в таком случае все inotifywait будут ждать окончания фина PHP скрипт.

1) Могу ли я как-то отправить вывод inotifywait в качестве параметров сценария PHP в командной строке, а затем захватить его с помощью $ argv (что предположительно? 2) Могу ли я создать отдельный экземпляр PHP с помощью stdin в качестве источника, так что будет продолжать inotifywait смотреть (не блокировать его дальнейшее выполнение)?

0
задан 9 October 2017 в 16:45

0 ответов

Другие вопросы по тегам:

Похожие вопросы: