Дир

6 отговора 533 прегледа
#1

Дир

Може ли някой да ми даде функция или нещо подобно което да показва големината на дадена директория. Например: Папката httpd на Apache. Благодаря

Отговор
в отговор на ghs #2

Re: Дир

Това може би ще ти свърши работа:


<?php
function DirStat($directory) {
global $FolderCount, $FileCount, $FolderSize;

chdir($directory);
$directory = getcwd();
$open = opendir($directory);
if($open) {
while($file = readdir($open)){
if($file == ".." || $file == ".") continue;
if(is file($file)) {
$FileCount++;
$FolderSize += filesize($file);
}elseif(is dir($file)){
$FolderCount++;
}
}
if($FolderCount > 0) {
$open2 = opendir($directory);
while($folders = readdir($open2)) {
$folder = $directory."/".$folders;
if($folders == ".." || $folders == ".") continue;
if(is dir($folder)) {
echo DirStat($folder);
}
}
closedir($open2);
}
closedir($open);
}
}

function ByteSize($bytes){
$size = $bytes / 1024;
if($size < 1024){
$size = number format($size, 2);
$size .= "kb";
} else {
if($size / 1024 < 1024) {
$size = number format($size / 1024, 2);
$size .= "mb";
} else {
$size = number format($size / 1024 / 1024, 2);
$size .= "gb";
}
}
return $size;
}

$dir = getcwd();
DirStat($dir);
chdir($dir);

$FolderSize = ByteSize($FolderSize);

echo $FileCount;
echo "</p>\n";
echo $FolderSize;
?>


Отговор
в отговор на phpFen #3

Re: Дир

Бял екран



Редактирано от ghs на

Отговор
в отговор на ghs #4

Виж тук

[линк]

Отговор
в отговор на ghs #5

Re: Дир

Имаше синтактични грешки. Ето:


<?php
function DirStat($directory) {
global $FolderCount, $FileCount, $FolderSize;

chdir($directory);
$directory = getcwd();
$open = opendir($directory);
if($open) {
while($file = readdir($open)){
if($file == ".." || $file == ".") continue;
if(is_file($file)) {
$FileCount++;
$FolderSize += filesize($file);
}elseif(is_dir($file)){
$FolderCount++;
}
}
if($FolderCount > 0) {
$open2 = opendir($directory);
while($folders = readdir($open2)) {
$folder = $directory."/".$folders;
if($folders == ".." || $folders == ".") continue;
if(is_dir($folder)) {
echo DirStat($folder);
}
}
closedir($open2);
}
closedir($open);
}
}

function ByteSize($bytes){
$size = $bytes / 1024;
if($size < 1024){
$size = number_format($size, 2);
$size .= "kb";
} else {
if($size / 1024 < 1024) {
$size = number_format($size / 1024, 2);
$size .= "mb";
} else {
$size = number_format($size / 1024 / 1024, 2);
$size .= "gb";
}
}
return $size;
}

$dir = "C:/Windows";

DirStat($dir);
chdir($dir);

$FolderSize = ByteSize($FolderSize);

echo "Dir: ".$dir."
";
echo "Files: ".$FileCount."
";
echo "Size: ".$FolderSize;
?>


Изход:

Dir: C:/Windows
Files: 10922
Size: 1.75gb

Което ми напомня да си разчистя малко Windows директорията.

Има три вида хора. Част от проблема, част от решението и част от пейзажа.
Отговор
в отговор на Учeщ #6

Re: Виж тук

Благодаря ви Вече работи

Отговор
в отговор на ghs #7

Re: Само още един въпрос...

от кода на Учещ.
Как ще стане ако например в дадената директория има повече от 1МБ фаилове и искам да ми показва съобщение с това?

Отговор