Autor Zpráva
matak
Profil
Exisuje funkce co prochází jen adresáře? Resp. nějaké nastavení např. scandir()?

Jde mi o to že způsob

function dirList($dir) {
foreach(scandir($dir) as $entry)
if($entry != '.' && $entry != '..')
{
$entry = $dir.'/'.$entry;
if(is_dir($entry))
{
$path = pathinfo($entry);
$listarray[$path['basename']] = dirList($entry);
}
else
{
$path = pathinfo($entry);
$listarray[] = $path['basename'];
}
}
return($listarray);
}


této funkce není příliš vhodný pro zjištění adresářové struktury, když je příliš moc souborů, mám zhruba 6000 obrázků v adresářích a tento způsob procházení zabere víc než 60 sekund, kdy skript spadne kvůli max limit time.
ronnie
Profil
Používám něco podobného.


<?php
function getFiles(&$rdi,$depth=0) {

if (!is_object($rdi))
return;

for ($rdi->rewind();$rdi->valid();$rdi->next()) {

if ($rdi->isDot())
continue;

if ($rdi->isDir() || $rdi->isFile()) {

for ($i = 0; $i<=$depth;++$i)
echo '&nbsp;&nbsp;&nbsp;';

echo $rdi->current().'<br />';

if ($rdi->hasChildren())
getFiles($rdi->getChildren(),1+$depth);
}
}
}

getFiles(new RecursiveDirectoryIterator('.'));


Pokud sew soubory příliš často nemění, tak výsledek funkce cachuj.
matak
Profil
jasně rekurzivní iterator mam také hotový, ale právě z důvodu, že to trvá příliš dlouho jsem hledal po jiných funkcích, takových kde se o existence adresáře nebo souboru nerozhoduje php, ale přímo daná funkce, při tomto použití 5000 souborů trvá déle než minutu, kešovat bohužel nemohu, soubory se mění a ověřovat zda soubor ještě existuje nebo ne, by mi moc nepomohlo
Tddd
Profil *
Chci se zeptat co to je adresář ve hře a jak se do něj dostat?
Toto téma je uzamčeno. Odpověď nelze zaslat.

0