Просмотр папки PHP на окнах

Я пишу простой PHP-скрипт для просмотра папки и ее подпапок для любых изменений (новые файлы, изменения, удаления), а затем выполнить действие.

Я запустил этот скрипт из командной строки в Windows, используя php -f script.php .

Я искал способ просмотра папок в Windows с привязками PHP. Что-то вроде inotify или gamin для окон было бы хорошо.

В ответах на этот вопрос упоминается FindFirstChangeNotification , но я не смог найти для него привязки PHP.

Существуют ли библиотеки / программное обеспечение для просмотра папки / файловой системы в окнах с привязками PHP?

Я закончил тем, что просто написал простую функцию, используя RecursiveDirectoryIterator который вызывается в бесконечном цикле.

Все, что мне нужно сделать, это проверить последнее измененное время файла или папки и вернуть true или false.

Это не очень точный подход, но он хорошо служит моим целям. Сидя на заднем плане, сценарий использует около 12 МБ бара.

Если на вашем сервере установлен Ruby, вы можете использовать watchr gem

То, что это делает, очень просто, при изменении fire / directory он выполняет определенный вами сценарий, который именно вы пытаетесь сделать.

Вот пример файла autotest.rb :

 #!/usr/bin/ruby # Match all PHP files in your project directory watch("<PROJECT_DIR_PATH>/(.*).<FILE_EXTENSION_PHP>") do |match| run_test %{<PROJECT_DIR_PATH>/Tests/#{match[1]}Test.php} end # Match all files in your Tests directory watch("<PROJECT_DIR_PATH>/Tests/.*Test.php") do |match| run_test match[0] end # Run test if there are matches def run_test(file) unless File.exist?(file) puts "#{file} does not exist" return end puts "Running #{file}" result = `phpunit #{file}` puts result end 

Таким образом, этот wil соответствует всем PHP или любым другим файлам расширений и запускает RegEx против имени файла, и если есть совпадение, например /Project/Tests/ClassNameTest.php, оно будет запускать тест, иначе просто прекратится с помощью массажа. Для удобства это может быть настроено на отправку писем по ошибкам в предопределенные электронные письма.

Вы можете использовать функцию inotify_add_watch PHP, чтобы получать уведомления о любых изменениях (новые файлы, изменения, удаления) в указанной директории. Он работает так же, как FileSystemWatcher в Windows.