Überwachung von Ordnern, die unter bestimmten Umständen nicht funktionieren

505
Raccoon

Ich verwende ein Powershell-Skript ( basierend darauf ), um einen Ordner zu überwachen und zu wissen, wann eine Datei erstellt wird.

Mein Skript ist das folgende:

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

Wenn ich die Datei "von Hand" erstelle, wird die Aktion gut ausgelöst (der grüne Satz wird angezeigt).

Die Datei wird jedoch nicht von Hand erstellt, sondern von einem PHP-Skript. Wenn die Datei vom PHP-Skript erstellt wird, wird die Aktion nicht ausgelöst.

Wenn ich jedoch die vom PHP-Skript erstellte Datei kopiere, wird sie ausgelöst, sodass sie kein Problem mit der Datei ist.

Kann es mit der Erstellung unter PHP funktionieren?


Hinweis: Die Datei wird auf diese Weise erstellt

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

AKTUALISIEREN

Nach weiteren Nachforschungen stelle ich fest, dass das Problem nicht bei PHP liegt, sondern wenn ein anderer Benutzer / eine andere Sitzung (dh derjenige, der das Powershell-Skript gestartet hat) die Datei erstellt.

Siehe meinen anderen Beitrag zu SO

0
Ja, so ist es. Ist es ein Problem? Raccoon vor 6 Jahren 0
@LievenKeersmaekers Ich denke, Ihre URL ist nicht mehr anwendbar, da Microsoft bestätigt hat, dass dies ein Problem in IIS 4.0 und 5.0 ist. Dieses Problem wurde erstmals in Windows 2000 Service Pack 3 behoben. Die Antwort auf SO ist 10 Jahre alt ... Ich denke, das Problem ist nicht das zugeordnete Laufwerk selbst, sondern wenn ein anderer Benutzer / eine andere Sitzung die Datei erstellt. Weil ich es auf meinem lokalen Computer probiert habe und es bestätigt. Raccoon vor 6 Jahren 0
Es ist alles, was zu * (altem) * Verstand gekommen ist. Ich werde meine Kommentare entfernen, um die Frage nicht durcheinander zu bringen. Lieven Keersmaekers vor 6 Jahren 0

1 Antwort auf die Frage

0
Ryan McVicar

Scheint, als ob PHP kein create-Event auslöst, möglicherweise aber ein Changed-Event. Versuchen Sie einige der anderen Ereignisse von hier

Hast du eine Quelle? Ich habe alle anderen Events ausprobiert und nichts wird ausgelöst Raccoon vor 6 Jahren 0
Nein, tue ich nicht. Es war nur ein Gedanke. Es gibt möglicherweise eine Eigenschaft in der Datei, die nicht von Ihrem PHP-Skript hinzugefügt wird. Haben Sie alle Dateiattribute Ihrer von PHP erstellten Datei und der kopierten Datei verglichen? Ryan McVicar vor 6 Jahren 0
Die von Hand erstellte Datei (oder Kopie / Einfügen) hat den Besitzer "DEBIAN \ root", die ursprüngliche jedoch "Unix User \ www-data" Raccoon vor 6 Jahren 0