我使用 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 下的创建一起工作?
注意:该文件是这样创建的
$file = fopen($path, 'wb');
fwrite($file, $my_data);
fclose($file);
更新
经过进一步研究,我发现问题不在于 PHP,而在于另一个用户/会话(启动 powershell 脚本的用户/会话)创建文件时。
答案1
似乎 PHP 不会触发 create 事件,但可能触发 Changed 事件。尝试其他一些事件这里