vypis vsech souboru,adresaru a podadresaru

13 příspěvků

Archiv diskusního fóra

Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.

  1. Zdravim! Nezkousel nekdo uz delat nejakou aplikaci, ktera by dovedla zjistit vsechny soubory + podadresare ktery jsou na serveru?
  2. Zkoušel
  3. Miluju upřímnost....
  4. :-)) 2Skocpik : hledej šmudlo, někde tady na foru máš komplet funkční zdroják, akorát je to děsně pomalé.
  5. <? set_time_limit(0);?> <pre> <? function getmicrotime(){ list($usec, $sec) = explode(" ",microtime()); return ((float)$usec + (float)$sec); } $time_start = getmicrotime(); function tdir($path,$csize){ $dire=Dir($path); $cntr=0; while($pol=$dire->Read()){ $flnm=$path."/".$pol; if(is_dir($flnm) && $pol!="." && $pol!=".."){ $csize=tdir($flnm,$csize); }elseif($pol!="." && $pol!=".."){ $csize=$csize+filesize($flnm); } } $dire->close(); return $csize; } $size=tdir("L:/php",0); $time = getmicrotime() - $time_start; echo $time."\n"; echo $size; ?> </pre> To ma byt ono? Kdyz sem to spustil, vyhodilo to tohle: Warning: OpenDir: Invalid argument (errno 22) in c:\apache\htdocs\downmonitor\index.php on line 10 Fatal error: Call to a member function on a non-object in c:\apache\htdocs\downmonitor\index.php on line 12
  6. $size=tdir("L:/php",0); co je toto za cestu?
  7. cesta k adresáři s PHP, jinak cesta k adresáři, jehož velikost chceš zjistit. Jinak ta chyba...asi špatně nastavená cesta k tomu adresáři. Kód níže Ti vypíše seznam $rowlimit adresářů, které překračují svou velikostí hodnotu $mblimit. Když si to upravíš, bude to to, co asi potřebuješ. Pokud chceš ovšem pouze vypsat vsechny soubory a podadresare, ktere jsou v urcitem adresari (a nezajimaji Te dalsi vnorene podadresare, muzes to proste jednoduse a rychle projit ctenim adresare. Jinak rekurze, jak je to naznaceno v tom mem kodu dole. Kdybys mi ale toto spoustel na freehostu pro velke mnozstvi adresaru, asi bych Te zastrelil na miste. ta promenna $class slouzi pouze pro formatovani vypisu pomoci css. Pokud zadas class do check_users_dirs, pouzije se, jinak to bude normalni vypis. <?php /** * @package directory size count * @author Arnie Göbel, arnie@reikiweb.cz * @version $Id: class_dir_count.php,v 0.3 2003/02/23 23:52:51 Arnie Exp $ */ class Size { var $mblimit = 50; //max. MB disk space accepted for 1 user var $rowlimit = 5; //show only first 'n' users, who are over $mblimit /** * ---------------------------------------------------------------+ * method::dirsize() * * return size of all files & directories in $thisdir in var $size * expect path to directory from method check_users_dirs * * ---------------------------------------------------------------+ */ function dirsize($thisdir) { global $size; $open = opendir($thisdir); while ($file = readdir($open)) { if ($file != "." && $file != "..") { if (is_dir($thisdir . "\\" . $file)) { $newdir = $thisdir . "\\" . $file; $this->dirsize($newdir); } else { $size += filesize($thisdir . "\\" . $file); } } } closedir($open); return $size; } /** * ------------------------------------------------------------- * * { Description } */ function check_users_dirs($dir, $class = false) { global $size; $allusersdir = opendir($dir); while ($userdir = readdir($allusersdir)) { if ($userdir != "." && $userdir != "..") { if (is_dir($dir . "\\" . $userdir)) { $actualdir = $dir . "\\" . $userdir; $size2 = number_format(round($this->dirsize($actualdir) / 1e3, 2), 2, ",", ""); $dirarray[] = $userdir; $sizearray[] = $size2; $size = 0; } } } closedir($allusersdir); arsort($sizearray, SORT_NUMERIC); reset($sizearray); $i = 1; foreach($sizearray AS $key => $value) { if ($i <= $this->rowlimit) { print ($value > $this->mblimit*1000 ? "" .($class ? "<span class=\"$class\">\n" : "") ."".$dirarray[$key]."-".$value." kB" .($class ? "</span><br />" : "<br />")."" : ""); } $i++; } } } $a = new Size(); $a->mblimit = 10; $a->rowlimit= 3; $a->check_users_dirs("D:\\Users",""); ?>
  8. nene, me jde o to, vypsat jenom jmena vsech souboru, adresaru a podadresaru a v nich vnorenych souboru. Velikosti souboru a adresaru me tolik nezajmaji.
  9. Bože můj..tak si to uprav. Už tady máš dva skripty, ¨ze kterých bys to mohl dát do kupy.
  10. nojo, jenze ja amater jsem nerozchodil ani jeden z nich :o(((
  11. ked si tu funkciu tdir upravis takto tak fungovat bude (aspon tu na wz). Namiesto tej mriezky # pouzi radsej znak ktory sa v nazvoch suborov nemoze vyskytovat, lebo potom ti explode blbo rozdeli nazvy suborov. <pre> <? function tdir($path,$csize){ $dire=opendir($path); $cntr=0; while(($pol=@readdir($dire)) !== false){ $flnm=$path."/".$pol; if($pol != "." && $pol != ".." && is_dir($flnm)){ $csize=tdir($flnm,$csize); } elseif($pol!="." && $pol!=".."){ $csize.= $flnm."#"; } } closedir($dire); return $csize; } $size=tdir("/uplna/cesta/k/hlavnemu/adresaru", ""); $size = explode("#", $size); foreach($size as $value) echo $value."<br>\n"; ?> </pre>
  12. <? set_time_limit(0);?> >>nemuze fakat, na WZ je tato FC zakazana <pre> <? function getmicrotime(){ list($usec, $sec) = explode(" ",microtime()); return ((float)$usec + (float)$sec); } $time_start = getmicrotime(); function tdir($path,$csize){ $dire=Dir($path); $cntr=0; while($pol=$dire->Read()){ $flnm=$path."/".$pol; if(is_dir($flnm) && $pol!="." && $pol!=".."){ $csize=tdir($flnm,$csize); }elseif($pol!="." && $pol!=".."){ $csize=$csize+filesize($flnm); } } $dire->close(); return $csize; } $size=tdir("L:/php",0); >>nemuzes pouzivat uplnou cestu, nybrz musis pouzivat relativni tedy naprd ./php $time = getmicrotime() - $time_start; echo $time."\n"; echo $size; ?> </pre>
  13. <? set_time_limit(0);?> >>nemuze fakat, na WZ je tato FC zakazana <pre> <? function getmicrotime(){ list($usec, $sec) = explode(" ",microtime()); return ((float)$usec + (float)$sec); } $time_start = getmicrotime(); function tdir($path,$csize){ $dire=Dir($path); $cntr=0; while($pol=$dire->Read()){ $flnm=$path."/".$pol; if(is_dir($flnm) && $pol!="." && $pol!=".."){ $csize=tdir($flnm,$csize); }elseif($pol!="." && $pol!=".."){ $csize=$csize+filesize($flnm); } } $dire->close(); return $csize; } $size=tdir("L:/php",0); >>nemuzes pouzivat uplnou cestu, nybrz musis pouzivat relativni tedy naprd ./php $time = getmicrotime() - $time_start; echo $time."\n"; echo $size; ?> </pre>

← Zpět na všechna témata