2012-02-14 4 views
3

나는 간단한 변경을위한 폴더와 그 하위 폴더 (새 파일, 수정, 삭제)를보고 작업을 수행하는 간단한 PHP 스크립트를 작성 중이다.윈도우에서 PHP 폴더 시청

나는 php -f script.php를 사용하여 Windows에 명령 줄에서이 스크립트를 실행합니다.

저는 PHP 바인딩이있는 윈도우에서 폴더를 볼 수있는 방법을 찾고 있습니다. 창문에 대한 inotify 또는 gamin 같은 것이 좋을 것입니다.

this question에 대한 답변은 FindFirstChangeNotification입니다. 그러나 PHP 바인딩을 찾을 수 없습니다.

PHP 바인딩이있는 윈도우에서 폴더/파일 시스템 시청을위한 라이브러리/소프트웨어가 있습니까?

답변

1

나는 단지 infinit 루프에서 호출되는 RecursiveDirectoryIterator를 사용하여 간단한 함수를 작성 끝났다.

파일이나 폴더의 마지막 수정 시간을 확인하고 true 또는 false를 반환하면됩니다.

이것은 매우 정확한 접근 방법은 아니지만 제 목적을 잘 충족시킵니다. 뒷 배경에 앉아 스크립트는 약 12MB의 RAM을 사용합니다. 루비는 서버에 설치 한 경우

0

당신은 당신이해야 할 노력하고 정확하게 인 당신에 의해 정의 된 스크립트를 실행 변경 화재/디렉토리에, 그것은 무엇을 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 테스트를 실행합니다. 그렇지 않으면 마사지로 종료됩니다. 편의상 미리 정의 된 목록 전자 메일에 오류가 발생하면 전자 메일을 보내도록 설정할 수 있습니다.

1

당신은 지정된 디렉토리의 변경 (새 파일, 수정, 삭제)의 통지를 얻을 inotify_add_watch PHP 기능을 사용할 수 있습니다. Windows에서 FileSystemWatcher과 동일한 방식으로 작동합니다.