Avatar billede --ivanhoe-- Nybegynder
07. marts 2004 - 12:17 Der er 7 kommentarer og
1 løsning

Kontroller om et directory er tomt

Jeg skal have valgt 12 dirs ud af ca 1000 dirs som ligger samlet i under et directory.

Det gør jeg sådan:

$define_dir = 'alldirs';
$dir_handle = opendir($define_dir);

// her lægges alle dirs herunder i et array

    $filenr = -1;
    while ($dir_name = readdir($dir_handle))
    {
    if ($filenr > 1) // (de to første entries er . og .. )
        {
        $filearray[] = $dir_name;
        }
    $filenr ++;
    }
// her vælges 14 tilfældige ud af det samlede
$randarray[] = array_rand($filearray, 14);

Problemet er at der kun skal vælges dirs som ikke er tomme..
findes der en function til at checke dir for om det er tomme ??
jeg kunne ikke finde nogen!!

Any help ? :o)
Avatar billede erikjacobsen Ekspert
07. marts 2004 - 13:02 #1
Du bruger bare opendir/readdir på underkatalogerne. Huske at "." og ".." altid
(sådan da) er der.
Avatar billede --ivanhoe-- Nybegynder
07. marts 2004 - 13:06 #2
problemet er lidt at der sagtens ka være flere tusind kataloger som så skal åbnes -> læses og tælles entries på ... er der ikke en smartere og mindre resource krævende måde at gøre det på ??
Avatar billede erikjacobsen Ekspert
07. marts 2004 - 13:24 #3
Joh, tælle dem på forhånd, og putte resultatet i en database.
Avatar billede --ivanhoe-- Nybegynder
07. marts 2004 - 13:34 #4
Jo sorry jeg mangler måske at sige at indholdet konstant ændrer sig!! tricky one :o)
men cool forslag
Avatar billede erikjacobsen Ekspert
07. marts 2004 - 13:36 #5
Når indholdet ændrer sig, opdaterer du databasen. Det er li'som det man har den til.
Avatar billede --ivanhoe-- Nybegynder
07. marts 2004 - 13:47 #6
Jo det er klart :-) men hvis hvis den skal opdateres hver gang siden besøges og derefter læses fra igen ryger ideen med at spare processor tid!! jeg kan ikke bruge databasen som en cache af hvad filsystemet indeholder :o(
helst skal checket ind under denne while:

$define_dir = 'alldirs';
$dir_handle = opendir($define_dir);

// her lægges alle dirs herunder i et array

    $filenr = -1;
    while ($dir_name = readdir($dir_handle))
    {
    if ($filenr > 1) // (de to første entries er . og .. )
        {
          // HER KUNNE CHECKET VÆRE SÅ KUN "VALIDE" DIRS RYGER I ARRAYET
        $filearray[] = $dir_name;
        }
    $filenr ++;
    }
Avatar billede erikjacobsen Ekspert
07. marts 2004 - 14:24 #7
Databasen skal kun opdateres ved ændringer, ikke ved hvert besøg på siden.
Avatar billede --ivanhoe-- Nybegynder
07. marts 2004 - 14:29 #8
jeps det skulle vel virke ! jeg havde håbet på en funktion lige tilpasset men man ka ik være heldig hver gang ;o)

Takker for ideerne
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester