For noget tid siden, havde jeg et problem på et af mine webhoteller. Problemet var, at jeg havde brugt for meget plads, hvilket betød at hele hotellet stod og hostede og stort set ikke kunne noget som helst. Jeg kunne heller ikke uploade eller sågar oprette nye filer, da alt pladsen simpelthen var væk. Det skulle jeg selvfølgelig have løst på en eller anden måde.
Jeg var på det tidspunkt ikke sikker på hvad der reelt set fyldte noget på serveren, og jeg kender ikke umiddelbart en nem måde at checke hvad en mappe fylder via FileZilla (det FTP-program jeg bruger), og jeg følte ikke rigtig for at gennemgå alle mapperne manuelt.
Derfor skrev jeg en simpel php-klasse, der løber igennem alle mapper og undermapper, beregner deres størrelse og udskriver mappernes navne + størrelse.
Et eksempel på et output denne fil giver, er således:
Starting with dir: /xxx/gallery thumbnails (61.32 MB) originals (9.54 GB) details (424.57 MB) Total size: 10.01 GB
Ikke noget fancy overhovedet, men det kunne det jeg havde brug for.
Jeg kunne forestille mig, at det ikke kun er mig selv der kunne ske at få brug for denne slags funktionalitet, så derfor har jeg smidt den php-fil jeg har brugt op i en zip-fil her i bunden af indlægget.
Det er et ultra-simpelt script – det skal blot uploades, og så kan du tilgå det i din browser. Det udskriver mapperne i den mappe som filen ligger i, dvs. lægger du den i roden, så får du en liste med alle mapperne i roden af webhotellet. Filen udskriver ikke undermapperne i de pågældende mapper.
Scriptet er ikke noget fancy, og der er ikke tænkt de vilde optimeringer ind i det. Derfor kan det tage noget tid, hvis du har mange mapper i din struktur. Dette skyldes simpelthen at scriptet blot løber alle mapper igennem, beregner deres størrelse, og fortsætter ned i eventuelle undermapper indtil den ikke kan komme længere ned. Meget lavpraktisk – men det virker! Det eneste du skal være opmærksom på, er at scriptet kan tænkes at give en time-out fejl, såfremt din server ikke tillader at man benytter PHP-funktionen set_time_limit
. Det er desværre ikke alle hoteller hvor man kan bruge denne funktion på grund af diverse restriktioner.
Mere er der vist ikke rigtigt at sige – filen kan hentes ved at klikke på linket her: FolderSize.zip
Du skal blot pakke filen ud, uploade den på din server og tilgå den via din browser, hvorefter scriptet kører. Ønsker du at det skal hente størrelser på mapper et andet sted end der hvor selve filen ligger, kan det ændres i linje 72 i filen.
Det er selvfølgelig på eget ansvar og alt det der 🙂 Men der er intet i filen der sender oplysninger til mig, sletter filer/mapper eller noget andet.
Ny funktionalitet
Jeg læste forleden en tråd på marketers.dk omkring en bruger, der spurgte efter om man kunne se hvad undermapper fyldte, uden at skulle flytte filen rundt hele tiden. Derfor har jeg udvidet php-filen, til at kunne udskrive flere niveauer.
Det betyder nu, at outputtet kan se således ud:
Starting with directory: /xxx/my-site.dk - wp-admin (4.71 MB) -- css (1.42 MB) -- images (283.23 KB) -- includes (1.61 MB) -- js (623.71 KB) -- maint (5.28 KB) -- network (107.06 KB) -- user (2.97 KB) - wp-content (3.50 MB) -- languages (1.31 MB) -- plugins (340.55 KB) -- themes (1.85 MB) -- upgrade (0.00 KB) - wp-includes (9.31 MB) -- certificates (239.24 KB) -- css (487.72 KB) -- fonts (173.79 KB) -- ID3 (944.79 KB) -- images (122.58 KB) -- js (3.41 MB) -- pomo (32.76 KB) -- SimplePie (414.92 KB) -- Text (54.44 KB) -- theme-compat (15.67 KB) Total size: 17.52 MB
Som standard vises kun niveau 1. For at få flere niveauer på, skal du tilføje en parameter til din URL, således:
http://domæne.dk/FolderSize.php?level=X
Erstat X’et med det antal niveauer du ønsker at se, eller sæt det til fx 9999 for at se alle niveauer.