par
chrislabricole » 05 nov. 2008, 00:04
Non, ils ont tous des tailles différentes

Mais sinon, je peux faire un système de cache qui enregistre simplement la taille dans un fichier texte, et dès que le fichier dépasse une heure, on recalcule...
Donc, pour le code :
$ftp_server = 'host';
$ftp_user = 'user';
$ftp_pass = 'pass';
$conn_id = ftp_connect($ftp_server) or die('Impossible de se connecter au serveur !');
// Tentative d'identification
if ( @ftp_login($conn_id, $ftp_user, $ftp_pass) ) {
echo 'Connecté !<br />';
} else {
echo 'Connexion impossible !<br />';
}
$res = ftp_size($conn_id, utf8_decode('chemin à récupéré') ); // un utf8_decode() parce-que sinon, les accents ne passent pas (retourne -1)
echo $res; // pour tester, après sa sera une addition...
ftp_close($conn_id);
Ça, c'est bon, le plus dur reste à faire, récupéré tous les chemins
EDIT: Oula, là, franchement, je bloque

Comment faire pour que le script parcours tous les chemins ?
Je vous montre se que j'ai fais pour l'instant mais c'est loin d'être fonctionnel
$current_dir = './';
$contents = ftp_nlist($conn_id, $current_dir);
$dir_size = 0;
$i = 0;
while( $i <= count($contents) ){
if( !is_dir($contents[$i]) ){ // Je sais pas si is_dir() marche sur un FTP...
$dir_size += ftp_size($conn_id, utf8_decode($current_dir.$contents[$i]) ); //on ajoute la taille
} else {
// on entre dans le dossier pour refaire une opération
}
}
Voilà merci d'avance !

Non, ils ont tous des tailles différentes ;)
Mais sinon, je peux faire un système de cache qui enregistre simplement la taille dans un fichier texte, et dès que le fichier dépasse une heure, on recalcule...
Donc, pour le code :
[php]$ftp_server = 'host';
$ftp_user = 'user';
$ftp_pass = 'pass';
$conn_id = ftp_connect($ftp_server) or die('Impossible de se connecter au serveur !');
// Tentative d'identification
if ( @ftp_login($conn_id, $ftp_user, $ftp_pass) ) {
echo 'Connecté !<br />';
} else {
echo 'Connexion impossible !<br />';
}
$res = ftp_size($conn_id, utf8_decode('chemin à récupéré') ); // un utf8_decode() parce-que sinon, les accents ne passent pas (retourne -1)
echo $res; // pour tester, après sa sera une addition...
ftp_close($conn_id);[/php]
Ça, c'est bon, le plus dur reste à faire, récupéré tous les chemins :P
EDIT: Oula, là, franchement, je bloque :oops:
Comment faire pour que le script parcours tous les chemins ?
Je vous montre se que j'ai fais pour l'instant mais c'est loin d'être fonctionnel ;)
[php]$current_dir = './';
$contents = ftp_nlist($conn_id, $current_dir);
$dir_size = 0;
$i = 0;
while( $i <= count($contents) ){
if( !is_dir($contents[$i]) ){ // Je sais pas si is_dir() marche sur un FTP...
$dir_size += ftp_size($conn_id, utf8_decode($current_dir.$contents[$i]) ); //on ajoute la taille
} else {
// on entre dans le dossier pour refaire une opération
}
}[/php]
Voilà merci d'avance ! :)