PHP ver gevorderde |
|
Ik heb het niet getest, maar dit zal ongeveer wel de bedoeling zijn.
Pas het zelf eventueel aan; zo wordt de grootte bijvoorbeeld een bytes terug gegeven.
<?php
$map = "ROOT/fotos"; //hoofdmap van de albums/fotos
function countPics($dir=$map) {
$counter = array("files" => 0, "dirs" => 0, "size" => 0); // aanmaken variabel
$dr = opendir($dir);
while(($read = readdir($dr) !== FALSE)) {
if(is_dir($dir.'/'.$read) && $read != "thumbs" && $read != "." && $read != "..") { //de puntbestanden (. eigen map; .. vorige map) worden aangezien als mappen; thumbs wordt ook gefilterd
$counter['dirs']++; // map erbij optellen
countPics($dir.'/'.$read);
}elseif(is_file($dir.'/'.$read) && $read != "thumb.db"){
$counter['files']++;
$counter['size'] += filesize($dir.'/'.$read);
}
}
closedir($dr);
return $counter;
}
$info = countPics();
var_dump($info);
?>
<?php $map = "ROOT/fotos"; //hoofdmap van de albums/fotos function countPics($dir=$map) { $counter = array("files" => 0, "dirs" => 0, "size" => 0); // aanmaken variabel while(($read = readdir($dr) !== FALSE)) { if(is_dir($dir.'/'.$read) && $read != "thumbs" && $read != "." && $read != "..") { //de puntbestanden (. eigen map; .. vorige map) worden aangezien als mappen; thumbs wordt ook gefilterd $counter['dirs']++; // map erbij optellen countPics($dir.'/'.$read); }elseif(is_file($dir.'/'.$read) && $read != "thumb.db"){ $counter['files']++; $counter['size'] += filesize($dir.'/'.$read); } } return $counter; } $info = countPics(); ?>
Edit:
Nou is php best snel, maar als het om enkele GB's gaat kun je beter dit script eenmalig uitvoeren en het resultaat in een database zetten.
Vervolgens elke keer wanneer je een foto upload of album aanmaakt dit in de record op laten tellen; het script dan kun je tussendoor nog eens uitvoeren om alles nauwkeurig na te tellen (mocht je bijvoorbeeld wat in je files hebben zitten rommelen).
Voorbeeld van een tabel:
CREATE TABLE `albumstats` (
type VARCHAR(6) NOT NULL,
waarde BIGINT UNSIGNED NOT NULL DEFAULT '0',
)TYPE=MyISAM;
INSERT INTO `albumstats` (type) VALUES ("files"),("albums"),("size")
CREATE TABLE `albumstats` ( type VARCHAR(6) NOT NULL, waarde BIGINT UNSIGNED NOT NULL DEFAULT '0', )TYPE=MyISAM; INSERT INTO `albumstats` (type) VALUES ("files"),("albums"),("size")
|