Espace disque

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Espace disque

espace disque

par mickael bay » 21 avr. 2006, 08:52

Bonjour,

$findme   = 'bytes';
            $pos = strpos($temp, $findme);
strpos() me retourne la fin du mot seulement, c'est assez bizarre mais comme ca. Donc si j'ai la fin du mot bytes, je dois soustraire 6 pour aller au debut de ce même mot.
Apres pour ce qui concerne INFO: cela ne change jamais, donc je dit a mon script de commencer a prendre les valeures situé apres le 6ème caractere.
Voila
Merci

par thierry59 » 20 avr. 2006, 18:25

ok, comme tu le sent ^^

bon, n'oublie pas de cliquer sur [Resolu]

par mickael bay » 20 avr. 2006, 17:33

bonsoir
$k='c'; //je definie les lettres de lecteur
$q='g';
$temp2=0;
while($k<$q){
		$cmd="freedisk /S $serveur /D $k: > space.txt"; //je prend l'espace disque
		exec($cmd);
		$ouvre=fopen("space.txt","r");
		$i = 0;
		while ($i < 2){
			// on recupère la ligne courante
			$temp = fgets($ouvre);
			$i++;
				}
			// fermeture du fichier
			fclose($ouvre);
			$base='serveur';
			//$EspaceLibre=$_POST['EspaceLibre'];
			$findme   = 'bytes';
			$pos = strpos($temp, $findme); //findme retourne la fin du mot
			$pos1=$pos-6; //pour aller au debut de bytes
			$temp = substr($temp, 6, $pos1); //je commence au caractere 6 pour finir au caractere definie ci dessus
			$temp = strtr($temp, "ÿ", ".");
			$temp1=$temp*1000*1000*1000/1024/1024/1024;
			$EspaceLibre1=round($temp1,3);
			$temp2 = $temp2 + $temp1;
			$temp3=round($temp2,3);
			if($EspaceLibre1 != '0'){
			echo $EspaceLibre1,"d'espace disque sur $serveur $k: <br>";
			}
De toutes facon l'erreur est acceptable et j'aimerai bien avoir un bout de code a moi dans mon programme lol

par thierry59 » 20 avr. 2006, 14:06

$pos1=$pos-6; 
 
pourquoi -6 ?


ta chaine est: "INFO: 35 795 005 440 bytes free on current volume."
tu doit detecté le debut de la chaine "INFO: "et ajouter a ta position 6
tu doit detecté le debut de la chaine "bytes" et soustraire 1
tu coupe ta chaine et il te restera: "35 795 005 440" = $value_str

Apres tu vire les espaces... si tu ne trouve pas une fonction pose un autre post, on te repondra tous de suite...

Ou alors creer toi meme la fonction! avec une boucle while ou for...

espace disque

par mickael bay » 20 avr. 2006, 10:28

exec('freedisk > space.txt');
$ouvre=fopen("space.txt","r");
$i = 0;
while ($i < 2){
	// on recupère la ligne courante
	$temp = fgets($ouvre);
	$i++;
	}
// fermeture du fichier
fclose($ouvre);
$base='serveur';
//$EspaceLibre=$_POST['EspaceLibre'];
$findme   = 'bytes';
$pos = strpos($temp, $findme);
$pos1=$pos-6;
$temp = substr($temp, 6, $pos1);
$temp = strtr($temp, "ÿ", ".");
$temp1=$temp*1000*1000*1000/1024/1024/1024;
$EspaceLibre=round($temp1,3);
J'ai reussi a ne garder que le 'nombre' 33ÿ261ÿ132ÿ800.

Voila une utilisation assez barbare, en remplacant le ÿ par un '.' php voit le nombre "33.261".132.800 mais seulement 33.261 l'autre point doit le perturber et donc, il ne garde en memoire que les chiffres avant le premier point et entre le premier et le deuxieme point.

Bref apres je le multiplie 3 fois par 1000, pour le convertir en octet, et je le divise 3 fois par 1024 pour le convertir en Go.

Donc ce prob est resolu, la taille correpond avec moins de 10% d'erreur, donc c'est bon, on vas pas chipoter.

espace disque

par mickael bay » 20 avr. 2006, 10:03

Re

Sinon, thierry j'ai oublié de te demander ta solution plus simple ^^...
Pour strtr, je ne peut pas 'enlever les espaces, je ne peut que les remplacer par un autre caractère

string strtr ( string str , string from , string to ) string strtr ( string str , array replace_pairs )

strtr retourne la chaîne str , après avoir remplacé chaque caractère du paramètre from par son équivalent dans le paramètre to .

Si from et to sont de tailles différentes, les caractères en trop dans l'un ou l'autre seront ignorés.
Je ne sais vraiment pas comment faire...

Merci

espace disque

par mickael bay » 20 avr. 2006, 08:36

Merci thierry pour ces commmandes,
Je vais les tester aussitot. Pour info tout les serveur sont en windows 2003, ou windows 2000 donc la commande system ou exec(freedisk) marche bien, (avec qq commentaires bien utiles d'ailleurs).
Le probleme se situe la, le programme en php se situe sur l'ordinateur d'un admin, et c'est le serveur, dont on veut connaitre la taille de l'espace disque.

En faite cela venait d'une commande edn phph qu tester l'espace disque de l'ordinateur ou etait installé le code en php, donc impossible a realiser vu que je souhaite connaitre l'espace d'un disque dur mis en reseau.
Rien de bien grave car freedisk le fait a ma place.

par iclo » 19 avr. 2006, 19:20

oui iclo par la commande system()
mais pour des raison de securité beau nombre débergeur la desactive..
oui, mais là, sauf erreur de ma part c'est sur un pc distant que l'on souhaite exécuter un programme sur le serveur (qui risque d'être sous Unix en plus)
donc... :wink:

par thierry59 » 19 avr. 2006, 18:07

oui iclo par la commande system()
mais pour des raison de securité beau nombre débergeur la desactive..

pour mickael bay

c du traitement de chaine
utilise strpos() pour connaitre la position de "INFO: " ( peu etre pas obliger si le 1er chiffres prend toujours la meme position.. )

utilise strpos() pour connaitre la position de "bytes"

utilise substr() pour couper la chaine et recupéré les chiffres...

il faut ensuite eliminé les espaces..
strtr() -- Remplace des caractères dans une chaîne ( a testé.. )


Mais, il y a peu etre une autre solution plus simple..


PAr contre pour:
Le probleme se situe la, le programme en php se situe sur l'ordinateur d'un admin, et c'est le serveur, dont on veut connaitre la taille de l'espace disque.
je ne vois pas ou est l'ennuie..

par iclo » 19 avr. 2006, 17:48

Ha ? parce qu'on peut lancer des exe windows depuis un script php ??

espace disque

par mickael bay » 19 avr. 2006, 14:53

RE ^^

La commande freedisk marche bien sous windows XP, elle etait livrée avec plusieurs autres commande dans un espece de service pack assez special.
Bref, cette commande me retourne quelque chose sous cette forme
"INFO: 35 795 005 440 bytes free on current volume."
je ne veux que les octets, le reste on peut dire que je m'en fous.
Deux question : Comment faire pour mettre la valeur chiffrée (35 795 005 440) dans un espece de tableau, voir une base de données.
J'ai pensé faire un traitement en php. Le fichier est en csv ou en txt, au choix.
Je saute les premiers caractères, des que je vois un espace je le supprime et des que je voit le caractère "b" de bytes j'arrete le traitement.

Merci pour vos observations et vos eventuels conseil
[/quote]

par Ultiny » 15 avr. 2006, 05:00

Ba alors si c'est que Win R2 ta peu de chance que ça marche sur tes 2000 voir même tes 2003 puisque R2 est tout frais.

espace disque

par mickael bay » 14 avr. 2006, 16:58

YOP YOP
Je viens de trouver, apres moult recherche que windows 2003 R2 possede une fonction, nommé freedisk qui permet d'avoir l'espace disque disponible d'un ordinateur a distance. Manque plus que je trouve freedisk.exe et le coller dans c:/windows/system32/
Merci pour ton aide mere-teresa

espace disque

par mickael bay » 14 avr. 2006, 14:00

Bonjour,
Le probleme se situe la, le programme en php se situe sur l'ordinateur d'un admin, et c'est le serveur, dont on veut connaitre la taille de l'espace disque.
Y aurait-il une commande permettant de specifier le systeme a partir duquel on souhaite connaitre l'espace disque ?

par mere-teresa » 14 avr. 2006, 11:50

Elles montrent l'espace disque de l'endroit où est installé PHP, oui.