在windows上观看的PHP文件夹

时间:2012-02-14 02:59:17

标签: php filesystemwatcher

我正在编写一个简单的PHP脚本来查看文件夹及其子文件夹以查找任何更改(新文件,修改,删除),然后执行操作。

我将使用php -f script.php从Windows上的命令行运行此脚本。

我一直在寻找一种方法来查看具有PHP绑定的Windows上的文件夹。像inotify或gamin for windows会很不错。

this question的答案提及FindFirstChangeNotification,但我找不到任何PHP绑定。

是否有任何用于在带有PHP绑定的窗口上观看文件夹/文件系统的库/软件?

3 个答案:

答案 0 :(得分:2)

我最后只是使用在无限循环中调用的RecursiveDirectoryIterator来编写一个简单的函数。

我所要做的就是检查文件或文件夹的上次修改时间并返回true或false。

这不是一个非常精确的方法,但它很好地满足了我的目的。脚本坐在后面,使用大约12MB的内存。

答案 1 :(得分:1)

您可以使用inotify_add_watch PHP函数获取指定目录中任何更改(新文件,修改,删除)的通知。它的工作方式与Windows上的FileSystemWatcher相同。

答案 2 :(得分:-1)

如果您在服务器上安装了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,它将运行测试,否则只需按下终止。为方便起见,可以设置为在发生错误时将电子邮件发送到预定义的列表电子邮件。