Page 1 sur 1

Taille et type de fichier

Posté : 09 mai 2006, 14:35
par hunta
Bonjour,

Je souhaite developper un script php m'indiquant le nombre et la taille de fichier présent sur mon disque dur.
existerait-il idealement une fonction en php ? ou alors une fonction sous windows ?

Merci

Posté : 09 mai 2006, 14:40
par ouckileou
Regarde dans le manuel les fonctions de manipulation de fichiers (le titre exact est "système de fichiers" je crois)
Toujours commencer par là quand on cherche une fonction ;)

Sinon il y aussi quelques scripts dans le forum "Vos contributions" je crois

taille et type de fichiers

Posté : 11 mai 2006, 09:54
par hunta
Bonjour,

Apres un détour dans la catégorie "vos contributions" j'ai crée un petit bout de code qui compte le nombre de fichiers par type et qui affiche la tailel des tous ces fichiers. Ainsi le résultat sera sous cette forme :
Sur c: vous avez 2000 fichiers .zip, la taille totale des fichiers .zip est de 800Mo

Voici le code de ma fonction, présent dans le fichier 12.php
<?
function calc_size_Rdir($dir_start){
    require ("15.php");
    $files = glob("$dir_start\*");
    if ($files) foreach ($files as $file) {
        if (is_dir($file))
            $size += calc_size_Rdir($file);
        elseif(substr($file,-4,1)=='.'){
			$ext = substr($file,-4);
			if ($ext=='.doc'){
				$size += round(filesize($file)/1048576,2);
				$j++;
			}
			if ($ext=='.zip') {
				$size1 += round(filesize($file)/1048576,2);
				$p++;
			}
			if ($ext=='.pdf') {
				$size2 += round(filesize($file)/1048576,2);
				$c++;
			}
			if ($ext=='.txt') {
				$size3 += round(filesize($file)/1048576,2);
				$a++;
			}
			if ($ext=='.jpg') {
				echo "$file <br>";
				$size4 += round(filesize($file)/1048576,2);
				$f++;
			}
			if ($ext=='.exe') {
				$size5 += round(filesize($file)/1048576,2);
				$m++;
			}
			if ($ext=='.dll') {
				$size6 += round(filesize($file)/1048576,2);
				$k++;
			}
		}
    }
}
?>
Dans 15.php je definis mes variables
<?
$a=0;
$j=0;
$p=0;
$c=0;
$f=0;
$m=0;
$k=0;
$size=0;
$size1=0;
$size2=0;
$size3=0;
$size4=0;
$size5=0;
$size6=0;
$espace = 0 ;
?>
apres j'appelleces fichiers dans mon 13.php
<?php
$dir = 'C:';
require ("15.php");
include ("12.php");
calc_size_Rdir($dir);
echo "il y a <strong> $j</strong> fichiers .doc,
la taille du(es) fichier(s) .doc est de <strong>$size </strong> Mo<br>";
echo "il y a <strong>$p</strong> fichiers .zip,
la taille du(es) fichier(s) .zip est de <strong>$size1</strong> Mo<br>";
echo "il y a <strong>$c</strong> fichiers .pdf,
la taille du(es) fichier(s) .pdf est de <strong>$size2</strong> Mo<br>";
echo "il y a <strong>$a</strong> fichiers .txt,
la taille du(es) fichier(s) .txt est de <strong>$size3</strong> Mo<br>";
echo "il y a <strong>$f</strong> fichiers .jpg,
la taille du(es) fichier(s) .jpg est de <strong>$size4</strong> Mo<br>";
echo "il y a <strong>$m</strong> fichiers .exe,
la taille du(es) fichier(s) .exe est de <strong>$size5</strong> Mo<br>";
echo "il y a <strong>$k</strong> fichiers .dll,
la taille du(es) fichier(s) .dll est de <strong>$size6</strong> Mo<br>";
?>
Voila, comme vous pouvez le voir, j'appelle 15.php dans 12.php
<?
function calc_size_Rdir($dir_start){
    require ("15.php");
le problème c'est que 15.php reinitialise mes variables a 0. Si je ne le met pas dans la fonction, mon programme m'annonce que toutes mes variables que normalement sont déclaré dans 12.php ne sont pas definies.

Je voudrais initialiser mes variables juste une fois, mais je ne peut pas...

Merci

Posté : 11 mai 2006, 10:29
par Ryle
Hello,

Laisse le require("15.php") en dehors de ta fonction pour définir les variables au niveau de ton script principal et dans ta fonction, redéclare les variables que tu utilises en global de manière à ce qu'il puisse les utiliser à l'intérieur de la fonction :
$var1 = 0;
$var2 = 0;

function incremente() {
  global $var1; // fait référence au $var1 externe
  var $var2; // sans global est considéré comme une variable interne indépendante
  $var1++;
  $var2++;
}

incremente();
echo $var1; // affiche "1"
echo $var2; // affiche "0", car c'est uniquement le $var2 de la fonction qui a été modifié
Par contre, y a peut être plus judicieux ou du moins plus explicite comme nom pour tes scripts que 12 et 15 ;)

Posté : 11 mai 2006, 10:37
par hunta
Re

Merci, ca marche. Je vais poster mon script dans vos contributions, sa pourrais servir...

encore merci