Я использую сценарий PowerShell (на основе этого), чтобы контролировать папку и знать, когда файл создается.

Мой сценарий следующий:

### 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?


NB: файл создан таким образом

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

ОБНОВИТЬ

После дальнейших исследований я обнаружил, что проблема не в PHP, а в том, что другой пользователь / сеанс (тот, кто запустил скрипт powershell) создает файл.

Смотрите мой другой пост на SO

1 ответ1

0

Похоже, что PHP не вызывает событие create, но, возможно, событие Changed. Попробуйте некоторые другие события здесь

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .