[英]PHP folder watching on windows
我正在編寫一個簡單的PHP腳本來查看文件夾及其子文件夾以進行任何更改(新文件,修改,刪除),然后執行操作。
我將使用php -f script.php
從Windows上的命令行運行此腳本。
我一直在尋找一種方法來觀看具有PHP綁定的Windows上的文件夾。 像inotify或gamin for windows會很不錯。
這個問題的答案提到了FindFirstChangeNotification
,但我找不到任何PHP綁定。
在使用PHP綁定的窗口上是否有用於文件夾/文件系統的庫/軟件?
我最后只是使用在infinit循環中調用的RecursiveDirectoryIterator
編寫一個簡單的函數。
我所要做的就是檢查文件或文件夾的上次修改時間並返回true或false。
這不是一個非常精確的方法,但它很好地滿足了我的目的。 腳本坐在后面,使用大約12MB的內存。
您可以使用inotify_add_watch PHP函數來獲取指定目錄中的任何更改(新文件,修改,刪除)的通知。 它的工作方式與Windows上的FileSystemWatcher相同。
如果您在服務器上安裝了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這樣的匹配,它將運行測試,否則只需按下終止。 為方便起見,可以設置為在發生錯誤時將電子郵件發送到預定義的列表電子郵件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.