Tom's Guide > Forum > Programmation > PHP : Nombre de Mo restants dans un dossier

PHP : Nombre de Mo restants dans un dossier

Forum Programmation : PHP : Nombre de Mo restants dans un dossier

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

Bonjour,

Je suis en train de réaliser un Panel de gestion d'hébergement et j'aimerais savoir comment insérer le nombre de Mo restants d'un dossier (code PHP ?) sur une page d'informations concernant l'hébergement.

Merci

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Il faut faire le contraire, tu compte l'espace utilisé dans le dossier/sous dossier actuel, et tu le soustrait du quota que tu lui attribu. C'est plus simple.

Répondre à okin@IDN

Il faut faire le contraire, tu compte l'espace utilisé dans le dossier/sous dossier actuel, et tu le soustrait du quota que tu lui attribu. C'est plus simple.

Répondre à okin@IDN

Oui voila c'est ce que je veux faire mais je ne sais pas comment :-? .
Si tu sais comment faire ou un site qui explique tout ça...
Merci

Répondre à franckB@IDN

count().

php.net, réfere toi à ces fonctions.

Répondre à okin@IDN

Edit: Putain de site ! Doublon quasi a chaque réponse...

Répondre à okin@IDN

DEFINITION DE count() sur fr.php.net :

count -- Compte le nombre d'éléments d'un tableau ou le nombre de propriétés d'un objet
Description
int count ( mixed var [, int mode] )

count() retourne le nombre d'éléments dans var, qui est généralement un tableau et tout le reste, sauf les objets, n'aura qu'un élément.

Pour les objets, count() retourne le nombre de propriétés non-statiques, sans tenir compte de la visibilité. Si vous avez SPL d'installé, vous pouvez vous accrocher à la fonction count() en implémentant l'interface Countable. Cette interface a exactement une méthode, count(), qui retourne la valeur retournée par la fonction count().

Cela n'est pas ce que je cherche car moi je cherche à inscrire le nombre de Mo restants ou utilisés dans un dossier/sous-dossiers. Count() sert à retourner des données. :-? .
Merci

Répondre à franckB@IDN

Svp, vous pouvez m'aider ? (UP)

Répondre à franckB@IDN

filesize

Quand on s'attaque a un panel d'hebergement, on peut quand meme feuilleter les fonctions relatives a dir et file...

Répondre à rongeur-sauvage

je n'ai rien compris a ton script.

Répondre à franckB@IDN

et bien tu prends filesize et dir .
avec dir tu parcours le dossier, pour chaque fichier trouvé, tu recuperes la taille avec filesize, et tu augmentes la variable espace_oqp. si tu tombes sur un dossier, tu le parcours et a chaque fichier trouvé tu augmentes espace_oqp. comme tu ne connais pas la profondeur en terme de sous-dossier, il faut recourir a une
fonction recursive.

sur une vraie offre d'hebergement, les quotas d'espace disque sont gérés par le systeme d'exploitation. chaque hébergé est alors un utilisateur du systeme (avec des droits forcément très limités). la verification du quota se fait donc avant l'upload. il n'est alors pas possible de le depasser. avec un script php, tu peux voir un depassement une fois qu'il a eu lieu a moins d'appeler le script a chaque demande d'upload.

Répondre à rongeur-sauvage

Toujours pas capté... dsl

Répondre à franckB@IDN

ton sujet m'a insipiré un bout de code.
s'il t'est utile, tu peux le réutiliser [quota.php]

Répondre à rongeur-sauvage

excellent script !
je pense que je vais l'utiliser.
une petite chose :
la fonction dans ton script

Code :
  1. $quota_max= 20*1000*1000; // 20Mo


ceci sert à indiquer un quota a un dossier ?!?
comment changer le quota si c'est possible ?
merci pour le script ! ;-)

Répondre à franckB@IDN

$quota_max= 20*1000*1000; // 20Mo
change la valeur entre le = et le ; à ta convenance pour changer la quantité maximum.
20*1000*1000 ça fait 20 Millions (d'octets), donc 20 Mo.

array_sum($quota_used) correspond à l'espace utilisé exprimé en octets.
$quota_unite peut prendre 3 valeurs : Octets, Ko ou Mo. On peut ainsi théoriquement changer les unités de calcul (si demain on dit 900 Ko par personne par exemple). Je dis théoriquement, car j'ai eu la flemme de tester.

note que ce script ne fait que fournir des indications, il n'empeche pas de dépasser le quota.
par contre si tu fais un formulaire d'upload en php, tu peux te servir de ces infos pour interdire le depassement de quota.

Répondre à rongeur-sauvage

d'accord merci pour ton aide ! ;-)

Répondre à franckB@IDN

Je viens d'essayer vite fais ton code, il est bien, mais il ne se stop pas, quand tu dépasses 20 Mo (Par exemple, à un moment il me marqué 112 % sur 20 Mo...)

Sinon, code très bien :-d

Répondre à frynfo

Bonjour, J'ai mis le script à la racine de site web hebergé chez free mais il ramene simplement la place occupée par le repertoire courant et le dernier repertoire classé par ordre alphabetique:

le dossier USER occupe 1.37 % des 100 Mo alloués
les 1.37 Mo utilisés sont répartis comme tel :
1.34 Mo dans /welcome/
0.03 Mo dans /

Alors que dans le repertoire racine j'ai 10 autres repertoires...
:-o

Répondre à lorillou

il te faut modifier la valeur de la variable $quota_root qui correspond au dossier qui sert de base de travail.

je lui ai donné la valeur getcwd(); qui renvoie le nom du dossier en cours.
pour qu'il scanne depuis la racine de free, je pense que tu dois lui donner la valeur $_SERVER['DOCUMENT_ROOT'];

edit: effectivement y a un bleme, c'est curieux.

Répondre à rongeur-sauvage

problème résolu.
le tableau résultant de Dirsize n'était ni static, ni global et du coup il se faisait écraser à chaque appel de la fonction.

là j'ai testé, ça fonctionne. l'usage de $_SERVER['DOCUMENT_ROOT'] donne un résultat satisfaisant (je trouve meme qu'il montre trop de choses :biggrin: )

Répondre à rongeur-sauvage

Hop hop hop, y'a un bug la !

Dans ton source, 1Ko = 1024 Octets, pas 1000 octets ! Tu as une perte de 24 octets a chaque kilos, ce qui fait pas mal (sur ton exemple de 20Mo ca fait presque 1Mo).

Voila, c'été juste pour ca.

Répondre à Bouloute

je te renvoie au débat sur les mébioctets et les mégaoctets http://fr.wikipedia.org/wiki/Octet
Sachant que la capacité des disques durs sont en fait exprimés en puissance de 10, plutot qu'en puissance de 2, j'ai choisi moi aussi de me référer aux unités normalisés (l'espace compté étant un sous-ensemble de disque dur).
De fait je ne considère pas ça comme un bug.
Apres, vous en faites ce que vous voulez, hein ;) , vous êtes desormais prévenus.

Répondre à rongeur-sauvage

Désolé, electronitien dans l'ame, je garde mes mega octets, les pourris qui sont payés a rien faire pour nous resortir des normes, modifier des symboles qui été tres bien avant et autres, c'est pas moi qui vait les faire avancer !
Donc 1mo = 1024Ko :D
Pour moi.

Répondre à Bouloute

Esce ce que cette variable et possible :

$quota_max= $_POST['quota'] . *1000*1000; // 50Mo, 100Mo, 250Mo, 500Mo ?

Répondre à mica2727

ca ne signifie rien ton truc.

Répondre à okinou
Tom's Guide > Forum > Programmation > PHP : Nombre de Mo restants dans un dossier
Aller à :

Il y a 1617 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens