Posts by: Moritz

Mit PHP einen Ordner überwachen

Bei der Extbase/Fluid Überarbeitung der gritte.ch Webseite ist das Galerie Modul ein Bestandteil davon. Da es hier (und natürlich auch bei den anderen Modulen) dem Redaktor möglichst einfach gemacht werden soll, werden die Bilder lediglich auf einen FTP hochgeladen. Nun will ich jedoch vermeiden, dass während dem hochladen bereits das Album angeschaut werden kann, sondern erst wenn kein Prozess mehr in dem spezifischen Ordner geschieht.

Dank Twitter bekam ich schon kurz nach meinem Tweet Anworten von @sprain, @npublish_chris und @acki_.

Ergebnis der gesammelten Hinweise ist folgende kleine PHP-Funktion, welche für meine Bedürfnisse prima funktioniert und vielleicht auch Anderen weiterhelfen kann. Grundsätzlich sollte die Funktion selbsterklärend oder zumindest anhand der Kommentare lesbar sein. Es wird von allen Dateien im Verzeichnis, eben auch von den aktuell im Transfer befindlichen, die Statistiken geholt und überprüft, ob sich die mtime in der Toleranz der aktuellen Zeit befindet. Wenn “ja” ist dies ein Indikator dafür, dass diese Datei noch im Transfer ist.

Bei Verzeichnissen mit vielen Dateien dürfte diese Variante nicht sonderlich effektiv sein, für meine Bedürfnisse mit maximal 50-60 Dateien ist dies jedoch ausreichend. Interessant wird es, sobald viele Ordner überwacht werden, ob es immer noch in annehmbarer Geschwindigkeit abgearbeitet wird. Sobald ich mal einen Moment Zeit habe, werde ich dies testen. Für Verbesserungen bin ich natürlich gerne offen.

Selec All Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/**
 * returns if a folder is currently under process or not
 *
 * @param string $directory path to the observed folder
 * @param integer $tolerance seconds for tolerance range
 * @return bool
 */
private function isFolderInProcess($directory, $tolerance = 5) {
    // define the upper and lower boundary for the tolerance	
    $lowerBoundary = time()-$tolerance;
    $upperBoundary = time()+$tolerance;
 
    // open the specific folder
    $dh = opendir($directory);
    // get all files
    while (($file = readdir($dh)) !== false) { 
        if($file !== '.' && $file !== '..') {
            // get the filestats for each file 
	    $filestats = stat($directory.'/'.$file);
	    // check if a mtime is in the current timerange
	    if (($filestats['mtime'] >= $lowerBoundary) && ($filestats['mtime'] <= $upperBoundary)) {
		return TRUE;
	    }
        } 
    } 
    return FALSE;
}

Kugelbahn

Diesen Bausatz hatte ich schon lange geplant und nun endlich mal umgesetzt. Die grosse Version davon wartet auch noch auf mich, ich freue mich schon!

Whisky #24

Leider ist die Adventszeit schon wieder vorbei und damit ein grandioser Adventskalender. Ramon und ich wünschen Euch allen besinnliche Feiertage, ein frohes Fest und “slàinte mhath”!

Liddesdale, Sherry Wood Adelphi

18 years, 46%, CHF 89.-

Ramon:

Leider ist die schöne Zeit zu Ende und der letzte Whisky wurde probiert. Wunderschöne Farbe und leicht süsslicher Geschmack mit langem Abgang. Ein würdiger letzter Whisky zum Heiligabend.

 

 

Moritz:

Super rauchiger Geschmack in der Nase. Leicht erdig im Mund. Langer und feiner Abgang. Toller Abschluss eines grandiosen Adventkalenders!

 

 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61  Scroll to top