2012-03-09 2 views
2

PHP 또는 노드에서 폴더 및 파일 변경 사항 (이벤트 별)을 직접들을 수도 있고 직접 할 수도 있습니다.폴더 및 파일 듣기

: 폴더 /user을 청취해야합니다. 이 디렉토리에 파일을 추가하면 PHP 나 노드가 정보를 받고 PathEvent::fileAdded("/user/user.profile")을 실행합니다. 폴더 이름을 변경하면 PathEvent::pathRenamed("/user/save1", "/user/save2")이 실행됩니다.

PHP와 같은 노드에는 노드와 같은 이벤트 시스템이 없다는 것을 알고 있습니다. 하지만 PHP의 경우, 예를 들어 지난 번 확인 된 이후에 변경된 사항이있는 메소드 (현재는 알지 못하는 메소드)를 실행할 수 있습니다.

음 ... 검색을 시작하는 방법 만 필요하며이 검색의 용어가 무엇인지 정확히 알지 못합니다. 예를 보여 주면 너무 좋을 것입니다! : P

답변

2

Node.js는이 기능을 제공합니다. 당신은이 here을 읽을 수 있습니다.

간단한 예 :

var fs = require('fs'); 

fs.watch('somedir', function (event, filename) { 
    console.log(event); 
    console.log(filename); 
}); 

참고 :

는 모든 플랫폼에서 지원되지 않습니다 콜백에서 파일 이름 인수를 제공하는 디렉토리를보고 (현재는 단지 리눅스와 윈도우에서 지원되는 것). 지원되는 플랫폼에서도 filename이 항상 제공되는 것은 아닙니다. 따라서 파일 이름 인수가 항상 콜백에 제공된다고 가정하지 말고 null 인 경우 대체 논리를 사용하십시오.

1

파일에 액세스/변경/추가되는 방법에 대한 액세스 권한이있는 경우 DB에 테이블 몇 개를 만들 것입니다. 하나는 변경 유형과 하나는 변경 및 시간 소인입니다.

누군가 파일 이름 바꾸기 등의 작업을 수행합니다. 래퍼를 통해 현재 타임 스탬프가있는 db에 삽입을 추가합니다. PHP 스크립트를 실행하면 마지막 이후 모든 변경 사항을 가져올 수 있습니다. 따라서

select * from Log where ModifiedOn > $lastRun.

이것은 DB 테이블의 변경 사항을 추적하는 방법입니다. 도움이되기를 바랍니다.

+1

감사합니다. 하지만 반복적으로 실행되므로 배열을 사용할 수 있습니다. 그러나 질문은 변경 사항을 검색 할 때마다 모든 파일을 검사 할 필요없이 PHP에서 수행하는 고유 한 방법입니다. –