Просмотр папки PHP на windows - PullRequest
       2

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

3 голосов
/ 14 февраля 2012

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

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

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

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

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

Ответы [ 3 ]

2 голосов
/ 15 февраля 2012

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

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

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

1 голос
/ 10 апреля 2016

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

0 голосов
/ 28 августа 2012

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

То, что он делает, очень просто: при смене каталога / каталога он запускает определенный вами сценарий, который именно то, что вы пытаетесь сделать.

Вот пример файла 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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...