Archiv verlassen und diese Seite im Standarddesign anzeigen : Auslesen des freien Speicherplatzes
Bitte um Hilfe !
Ich möchte den freien Speicherplatz meiner Domain auslesen.
Allerdings zeigt mir "diskfreespace" immer den Speicherplatz der Festplatte an. Die geschied auch, wenn ich eine Pfadangabe mache.
<?php
$dsfb = diskfreespace("Verzeichnis_meiner_Domain");
$dsfk = $dsfb /1024;
$dsfm = $dsfb /1024 / 1024;
echo " <b> Byte:</b> " . $dsfb . "<br>";
echo " <b>KiloByte: </b>" . $dsfk . "<br>";
echo " <b>MegaByte: </b>" . $dsfm . "<br>";
?>
Stevie B.
21.10.2005, 12:56:51
diskfreespace() ist ein Alias von dem überall abgeraten wird. Benutze besser disk_free_space( string directory ).$df = disk_free_space("/");
echo "<b>Byte:</b> ".$df."<br>";
echo "<b>KiloByte:</b> ".($df/1024)."<br>";
echo "<b>MegaByte:</b> ".round($df/1024/1024,2)."<br>";
Ich habe getestet, aber wie zuvor gibt er mir den freien Platz der Serverplatte aus.
<?php
$df = disk_free_space("/homeverzeichnis/www.domain.de/");
echo "<b>Byte:</b> ".$df."<br>";
echo "<b>KiloByte:</b> ".($df/1024)."<br>";
echo "<b>MegaByte:</b> ".round($df/1024/1024,2)."<br>";
?>
Ausgabe:
MegaByte: 98662.32
Das ist zuviel, so viel Platz habe ich dort nicht zur Verfügung.
Stevie B.
21.10.2005, 13:35:37
<?php
function disk_used_space($drive) {
return disk_total_space("$drive") - disk_free_space("$drive");
}
echo round((disk_used_space("/")/1024)/1024,2)." MB";
?>
Das war wieder nix :-(
<?php
$drive = ("/home/www.domain.de/");
function disk_used_space($drive)
{
return disk_total_space("$drive") - disk_free_space("$drive");
}
echo round((disk_used_space("$drive")/1024)/1024,2)." MB";
?>
Ausgabe:
32998.02 MB
Immer noch die ganze Serverplatte, vermut ich mal.
nunja, soweit ich weiss, kannst du dir das Disk Quota mit (also den platz, den du hast!) mit dem Konsolen kommando "quota" anzeigen lassen. Diese informationen müsstest du allerdings noch auswerten.
ein Konsolen kommando kannst du mir
$result=´quota´;
aufrufen. die rückgabe kommt dann in $result. Kann aber sein, dass dein anbieter das nicht erlaubt. In dem fall kann ich dir auch nicht weiterhelfen.
Geht irgendwie auch nicht !
ABER so kann ich den belegten Speicher auslesen.
MÖCHTE ABER auch den freien Speicherplatz wissen.
<?
$spacePath="/homeverzeichnis/www.domain.de/";
exec("du -s $spacePath", $du);
$spaceUsed = split(" ", $du[0]);
$spaceUsed = $spaceUsed[0] / 1024;
$spaceUsed = round($spaceUsed,2);
echo "Belegter Speicher:.".str_replace(".",",",$spaceUsed)." MB";
?>
meikel (†)
21.10.2005, 16:50:00
ABER so kann ich den belegten Speicher auslesen.
MÖCHTE ABER auch den freien Speicherplatz wissen.
Einfach ausrechnen. PHP beherrscht auch die Subtraktion.
Entschuldige, aber so schlau war ich auch schon.
Ich möchte die Info vom Server haben.
Ich denke das macht mehr Sinn und wäre genauer.
Vielleicht fällt jemand ja noch was dazu ein.
Ich bin für jede Anregung dankbar!!!
Stevie B.
22.10.2005, 00:05:55
Wenn Du weißt, wovon ich ausgehe, wieviel Webspace in Deinem Paket enthalten ist, kannst Du es so probieren:
<?php
$totalspace = 500; //Gesamt in MB - hier bitte anpassen
$tSpace = ($totalspace*1024)*1024; //Gesamt in Bytes - und hier anpassen
$root = realpath("../html/"); //ggf. root-dir anpassen
$result=array();
function GetUsedSpace($dir) {
global $result;
$subdirs=array();
$dirh=opendir($dir);
while($filename=readdir($dirh)) {
if($filename!=".." && $filename!=".") {
if(is_file($dir."/".$filename)) {
$space += filesize($dir."/".$filename);
}
elseif(is_dir($dir."/".$filename)) {
$subdirs[]=$dir."/".$filename;
$space += filesize($dir."/".$filename);
}
}
}
$result[] = $space;
closedir($dirh);
for($i=0;$i<count($subdirs);$i++) {
GetUsedSpace($subdirs[$i]);
}
}
GetUsedSpace($root);
foreach ($result as $size) {
$space += $size;
}
//Ausgabe:
print "Gesamter Speicherplatz: ".$totalspace." MB<br>";
if ($space < 1024) {
$vSpace = $space." Bytes";
} elseif ($space < (1024*1024)) {
$vSpace = round($space/1024,2)." KB";
} elseif ($space < (1024*1024*1024)) {
$vSpace = round(($space/1024)/1024,2)." MB";
} elseif ($space < (1024*1024*1024*1024)) {
$vSpace = round((($space/1024)/1024)/1024,2)." GB";
}
print "Verbrauchter Speicherplatz: ".$vSpace."<br>";
$free = $tSpace-$space;
if ($free < 1024) {
$fSpace = $free." Bytes";
} elseif ($free < (1024*1024)) {
$fSpace = round($free/1024,2)." KB";
} elseif ($free < (1024*1024*1024)) {
$fSpace = round(($free/1024)/1024,2)." MB";
} elseif ($free < (1024*1024*1024*1024)) {
$fSpace = round((($free/1024)/1024)/1024,2)." GB";
}
print "Freier Speicherplatz: ".$fSpace."<br>";
?>
meikel (†)
22.10.2005, 03:27:14
Entschuldige, aber so schlau war ich auch schon.
Ich möchte die Info vom Server haben.
Ich denke das macht mehr Sinn und wäre genauer.
Wenn es so eine PHP Funktion nun mal nicht gibt, wirst Du wohl oder übel selber rechnen müssen.
1. merke Dir die Größe des erlaubten Webspaces
Falls Du Shellzugriff via PHP hast, dann nutze 'du'. Die Optionen kriegste mit 'du --help' raus. Ob Dich der Provider ab 'quota' ranläßt, weiß ich nicht. Dürfte allerdings sinnfrei sein, wenn das Script vom Apachen ausgeführt wird.
Falls nicht:
2. erfrage beim Provider, wie groß die Inodes sind. In der Regel sind es 4096 Bytes
3. ermittle die Anzahl der Inodes, die die Dateien belegen. Verzeichnisse belegen mindestens einen Inode.
4. print $erlaubter_webspace - ($inodes * $inode_groesse)
Hinweis:
beachte Punkt 3. Es ist schon ein kleiner Unterschied, ob das Script 90KB oder nur 60KB ermittelt, weil Du nur filesize() addierst
vBulletin® v3.8.3, Copyright ©2000-2024, Jelsoft Enterprises Ltd.