특정 상황에서 작동하지 않는 폴더 모니터링

나는 파워 쉘 스크립트 ( 이것을 바탕으로 )를 사용하여 폴더를 모니터하고 파일 작성시기를 알 수 있습니다.

내 스크립트는 다음과 같습니다.

### SET FOLDER TO WATCH + FILES TO WATCH + SUBFOLDERS YES/NO
    $watcher = New-Object System.IO.FileSystemWatcher
    $watcher.Path = "H:\draw\"
    $watcher.Filter = "*.nrrd"
    $watcher.IncludeSubdirectories = $true
    $watcher.EnableRaisingEvents = $true

### DEFINE ACTIONS AFTER AN EVENT IS DETECTED
    $action =
    {
        $path = $Event.SourceEventArgs.FullPath
        $changeType = $Event.SourceEventArgs.ChangeType

        if ($path -like '*\tumor\*')
        {
            Write-Host "The file '$path' was $changeType at '$(Get-Date)'" -fore green
        }
    }
### DECIDE WHICH EVENTS SHOULD BE WATCHED
    Register-ObjectEvent $watcher "Created" -Action $action
    while ($true) {sleep 5}

“손으로”파일을 만들면 작업이 제대로 실행됩니다 (녹색 문장이 표시됨).

그러나 파일은 손으로 작성된 것이 아니라 PHP 스크립트로 작성됩니다. 그리고 파일이 PHP 스크립트에 의해 생성되면, 액션은 트리거되지 않습니다.

그러나 PHP 스크립트에 의해 생성 된 파일을 복사 / 붙여 넣을 때 트리거가 발생하므로 파일에 문제가 없습니다.

그것은 PHP에서 생성 작업을 가능하게 할 수 있습니까?


주의 : 파일은 이렇게 만들었습니다.

$file = fopen($path, 'wb');
fwrite($file, $my_data);
fclose($file);

최신 정보

추가 연구가 끝난 후,이 문제는 PHP가 아니라 다른 사용자 / 세션 (powershell 스크립트를 시작한 사용자)이 파일을 만들 때 발생한다는 것을 알았습니다.

만나다 내 다른 게시물에 그래서



답변

PHP는 create 이벤트를 트리거하지 않지만 Changed 이벤트는 트리거하는 것처럼 보입니다. 다른 이벤트 중 일부를 시도해보십시오. 이리


답변