Я использую сценарий 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