在Windows上观看PHP文件夹

问题描述:

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

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

我一直在寻找一种方法来观察具有PHP绑定的窗口上的文件夹。一些像inotify或gamin窗户将是很好的。

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

是否有任何图书馆/软件文件夹/文件系统监视窗口与PHP绑定?

我最终只是写了一个简单函数,使用在infinit循环中调用的RecursiveDirectoryIterator

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

这不是一个非常确切的方法,但它很好地服务于我的目的。坐在后台,脚本使用大约12MB的内存。

如果您在服务器上安装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或任何其他扩展名的文件和对文件的名称来运行正则表达式,如果有匹配像/项目/测试/ ClassNameTest.php它将运行测试,否则只是按摩结束。为了方便起见,这可以设置为将错误发送到预定义列表电子邮件。

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