Ich würde bei den Daten noch mal anfangen.
Bestehende Daten aus der Datei einlesen:
Code:
$data = array();
$filename = 'cache/folders.php';
if (file_exists($filename)) {
include($filename);
}
// $data enthält nun ein leeres Array oder das aus unserer Datei
Dann würde ich meine neuen Verzeichnisse speichern:
Code:
$new_data = array('folder_a' => 0, 'folder_b' => 0, 'folder_d' => 0);
Und zuletzt kombinieren wir die neuen und die alten Daten und schreiben sie wieder in die Datei:
Code:
$data = array_merge($data, $new_data);
write_cache($filename, $data);
Hier die passende Funktion:
Code:
function write_cache($filename, $data) {
$handle = @fopen($filename, 'w');
@flock($handle, LOCK_EX);
@fwrite($handle, '<' . '?php' . "\n" . '$data = unserialize(\'' . str_replace('\'', '\\\'', str_replace('\\', '\\\\', serialize($data))) . '\');' . "\n" . '?' . '>');
@flock($handle, LOCK_UN);
@fclose($handle);
@umask(0000);
@chmod($filename, 0666);
}
$data enthält nun die aktuellsten Daten. Die Zauberfunktionen sind hier serialize() bzw. unserialize(), die dafür sorgen, dass Du Arrays als schlichten Text speichern und wiederherstellen kannst.
Doppelte fliegen bei array_merge() raus, so dass das neuere Array das alte überschreibt, falls der Wert schon vorhanden ist. Mehr dazu hier:
http://de.php.net/manual/de/function.array-merge.php
Die Nullen könntest Du übrigens mit der Anzahl der Dateien ersetzen, die sich in dem jeweiligen Verzeichnis befinden oder einem anderen Wert, den Du den Verzeichnissen zuordnen möchtest.