Existe-t-il un moyen de recuperer la taille d'un fichier distant autrement
qu'en fesant un fopen pour recuperer la totalité du fichier et calculer sa
taille
selon le "buffer" ? J'utilise en effet cette methode mais ca ralenti pas mal
mon script...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Sebastien
fred wrote:
Bonjour,
Existe-t-il un moyen de recuperer la taille d'un fichier distant autrement qu'en fesant un fopen pour recuperer la totalité du fichier et calculer sa taille selon le "buffer" ? J'utilise en effet cette methode mais ca ralenti pas mal mon script...
Merci pour votre aide Fred.
Fais une requête HTTP HEAD sur le fichier distant (voir les fonctions de manipulation de sockets). Parse la réponse du serveur et récupère le Content-Length ;)
fred wrote:
Bonjour,
Existe-t-il un moyen de recuperer la taille d'un fichier distant autrement
qu'en fesant un fopen pour recuperer la totalité du fichier et calculer sa
taille
selon le "buffer" ? J'utilise en effet cette methode mais ca ralenti pas mal
mon script...
Merci pour votre aide
Fred.
Fais une requête HTTP HEAD sur le fichier distant (voir les fonctions de
manipulation de sockets). Parse la réponse du serveur et récupère le
Content-Length ;)
Existe-t-il un moyen de recuperer la taille d'un fichier distant autrement qu'en fesant un fopen pour recuperer la totalité du fichier et calculer sa taille selon le "buffer" ? J'utilise en effet cette methode mais ca ralenti pas mal mon script...
Merci pour votre aide Fred.
Fais une requête HTTP HEAD sur le fichier distant (voir les fonctions de manipulation de sockets). Parse la réponse du serveur et récupère le Content-Length ;)
Dominique Ottello
"fred" écrivait :
Bonjour,
Bonsoir,
Existe-t-il un moyen de recuperer la taille d'un fichier distant autrement qu'en fesant un fopen pour recuperer la totalité du fichier et calculer sa taille
Je suis très loin d'être un "gourou" du PHP, mais pour les tailles de fichiers et selon ce qui est écrit à :
filesize() Renvoie la taille du fichier [ Exemples avec filesize ] PHP 3, PHP 4 , PHP 5
Description int filesize ( string filename )
filesize renvoie la taille du fichier filename , ou FALSE en cas d'erreur.
Note : Comme le type entier de PHP est signé et que de nombreuses plates-formes utilisent des entiers de 32 bits, filesize peut retourner des résultats étranges pour les fichiers de taille supérieure à 2 Go. Pour les fichiers entre 2 et 4 Go, cela peut être contourné avec sprintf("%u", filesize($file)) .
Note : Les résultats de cette fonction sont mis en cache. Voyez la fonction clearstatcache plus de détails.
Depuis PHP 5.0.0 cette fonction peut aussi être utilisée avec quelques protocoles url. Lisez Liste des protocoles supportés pour une liste des protocoles supportant la famille de fonctionnalités de stat .
Exemple avec filesize <?php
// outputs e.g. unfichier.txt: 1024 octets
$filename = 'unfichier.txt'; echo $filename . ': ' . filesize($unfichier) . ' octets'; ?> -- = Dominique Ottello = http://www.ottello.net Aujourd'hui, l'idéal du progrès est remplacé par l'idéal de l'innovation : il ne s'agit pas que ce soit mieux, il s'agit seulement que ce soit nouveau, même si c'est pire qu'avant et cela de toute évidence. Montherlant
"fred" <zefri@free.fr> écrivait :
Bonjour,
Bonsoir,
Existe-t-il un moyen de recuperer la taille d'un fichier distant autrement
qu'en fesant un fopen pour recuperer la totalité du fichier et calculer sa
taille
Je suis très loin d'être un "gourou" du PHP, mais pour les tailles de
fichiers et selon ce qui est écrit à :
filesize() Renvoie la taille du fichier
[ Exemples avec filesize ] PHP 3, PHP 4 , PHP 5
Description
int filesize ( string filename )
filesize renvoie la taille du fichier filename , ou FALSE en cas
d'erreur.
Note :
Comme le type entier de PHP est signé et que de nombreuses plates-formes
utilisent des entiers de 32 bits, filesize peut retourner des résultats
étranges pour les fichiers de taille supérieure à 2 Go. Pour les
fichiers entre 2 et 4 Go, cela peut être contourné avec sprintf("%u",
filesize($file)) .
Note :
Les résultats de cette fonction sont mis en cache. Voyez la fonction
clearstatcache plus de détails.
Depuis PHP 5.0.0 cette fonction peut aussi être utilisée avec quelques
protocoles url. Lisez Liste des protocoles supportés pour une liste des
protocoles supportant la famille de fonctionnalités de stat .
Exemple avec filesize
<?php
// outputs e.g. unfichier.txt: 1024 octets
$filename = 'unfichier.txt';
echo $filename . ': ' . filesize($unfichier) . ' octets';
?>
--
= Dominique Ottello = http://www.ottello.net
Aujourd'hui, l'idéal du progrès est remplacé par l'idéal de l'innovation :
il ne s'agit pas que ce soit mieux, il s'agit seulement que ce soit nouveau,
même si c'est pire qu'avant et cela de toute évidence. Montherlant
Existe-t-il un moyen de recuperer la taille d'un fichier distant autrement qu'en fesant un fopen pour recuperer la totalité du fichier et calculer sa taille
Je suis très loin d'être un "gourou" du PHP, mais pour les tailles de fichiers et selon ce qui est écrit à :
filesize() Renvoie la taille du fichier [ Exemples avec filesize ] PHP 3, PHP 4 , PHP 5
Description int filesize ( string filename )
filesize renvoie la taille du fichier filename , ou FALSE en cas d'erreur.
Note : Comme le type entier de PHP est signé et que de nombreuses plates-formes utilisent des entiers de 32 bits, filesize peut retourner des résultats étranges pour les fichiers de taille supérieure à 2 Go. Pour les fichiers entre 2 et 4 Go, cela peut être contourné avec sprintf("%u", filesize($file)) .
Note : Les résultats de cette fonction sont mis en cache. Voyez la fonction clearstatcache plus de détails.
Depuis PHP 5.0.0 cette fonction peut aussi être utilisée avec quelques protocoles url. Lisez Liste des protocoles supportés pour une liste des protocoles supportant la famille de fonctionnalités de stat .
Exemple avec filesize <?php
// outputs e.g. unfichier.txt: 1024 octets
$filename = 'unfichier.txt'; echo $filename . ': ' . filesize($unfichier) . ' octets'; ?> -- = Dominique Ottello = http://www.ottello.net Aujourd'hui, l'idéal du progrès est remplacé par l'idéal de l'innovation : il ne s'agit pas que ce soit mieux, il s'agit seulement que ce soit nouveau, même si c'est pire qu'avant et cela de toute évidence. Montherlant
Kevin
Bonjour, Bonsoir :)
ce que tu cherches est impossible a faire avec fopen, il faut utiliser les sockets, et faire une requete http afin de demanger la recupereration du fichier. puis dans la premiere trame de reponse ce trouve (logiquement) "Content-Length" qui est la taille du fichier en octets
exemple de trame:
<< requette client >> GET /spamcombat.zip HTTP/1.1 Host: mirror1.glocksoft.com Connection: Close
bref il faut fermer la connexion dès que tu as recuperé le "Content-Length" ou un double saut de ligne (separation entre les entetes et les données, donc synonyme de l'absence de cette info) sinon il va continuer en boucle :)
un petit exemple de script avec les sockets pour http (extrait de php.net)
qq trucs a modifier pr que ca marche mais pas vraiment grand chose :)
j'te laisse reflechir et si tu n'arrives pas redemande, et je t'aiderai alors :)
Bonne soirée
Kevin -- => Pour me mailer, virez toutes les voyelles de la partie avant l'arobase: naegoo @ pulsed . net
Coders don't die... they just JMP without RET
Bonjour,
Bonsoir :)
ce que tu cherches est impossible a faire avec fopen, il faut utiliser
les sockets, et faire une requete http afin de demanger la
recupereration du fichier. puis dans la premiere trame de reponse ce
trouve (logiquement) "Content-Length" qui est la taille du fichier en octets
exemple de trame:
<< requette client >>
GET /spamcombat.zip HTTP/1.1
Host: mirror1.glocksoft.com
Connection: Close
bref il faut fermer la connexion dès que tu as recuperé le
"Content-Length" ou un double saut de ligne (separation entre les
entetes et les données, donc synonyme de l'absence de cette info)
sinon il va continuer en boucle :)
un petit exemple de script avec les sockets pour http (extrait de php.net)
ce que tu cherches est impossible a faire avec fopen, il faut utiliser les sockets, et faire une requete http afin de demanger la recupereration du fichier. puis dans la premiere trame de reponse ce trouve (logiquement) "Content-Length" qui est la taille du fichier en octets
exemple de trame:
<< requette client >> GET /spamcombat.zip HTTP/1.1 Host: mirror1.glocksoft.com Connection: Close
bref il faut fermer la connexion dès que tu as recuperé le "Content-Length" ou un double saut de ligne (separation entre les entetes et les données, donc synonyme de l'absence de cette info) sinon il va continuer en boucle :)
un petit exemple de script avec les sockets pour http (extrait de php.net)