Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Getimagesize, local ou distant

1 réponse
Avatar
Yttrium
Bonjour,

La fonction getImageSize() peut vraisemblablement être utilisée soit par
le biais d'une URL distante, soit par le biais d'un chemin d'accès local.
Ex :
getimagesize('/var/www/images/test.jpg')
ou
getimagesize('http://www.toto.com/images/test.jpg')

Dans l'hypothèse ou le getimagesize() est utilisé avec une URL pointant
vers le serveur hébergeant le script.

Une de ces deux méthodes est elle plus lente que l'autre , si oui pourquoi ?

Merci d'avance de vos avis.

Cordialement.

Yttrium

1 réponse

Avatar
Olivier Miakinen

La fonction getImageSize() peut vraisemblablement être utilisée soit par
le biais d'une URL distante, soit par le biais d'un chemin d'accès local.
Ex :
getimagesize('/var/www/images/test.jpg')
ou
getimagesize('http://www.toto.com/images/test.jpg')


Oui, à condition que ce soit autorisé sur le serveur.

Dans l'hypothèse ou le getimagesize() est utilisé avec une URL pointant
vers le serveur hébergeant le script.

Une de ces deux méthodes est elle plus lente que l'autre , si oui pourquoi ?


Je n'ai pas lu le code source en C correspondant aux deux accès, mais
mon avis est que l'algo est à peu près le suivant dans un cas puis dans
l'autre.


1) getimagesize('/var/www/images/test.jpg')

a) lire le fichier /var/www/images/test.jpg
b) récupérer les infos de l'image, dont la taille


2) getimagesize('http://www.toto.com/images/test.jpg')

a) faire une requête au DNS pour résoudre l'adresse www.toto.com
b) ouvrir une connexion à l'adresse IP correspondante
c) lui envoyer la requête GET /images/test.jpg
d) attendre la réponse
e) lire la réponse (dont le contenu du fichier)
f) récupérer les infos de l'image, dont la taille

2bis) Ce qui se passe sur le serveur web lors des étapes 2b à 2e

a) accepter la connexion
b) lire et interprêter la requête GET /images/test.jpg
c) lire le fichier /var/www/images/test.jpg
d) renvoyer la réponse (dont le contenu du fichier)


Donc, dans ton deuxième scénario, ce qui était l'étape « 1 a » est fait
en « 2bis c », ce qui était l'étape « 1 b » est fait en « 2 f », et tout
le reste est à faire en plus. À toi de voir si le surcroît de requêtes
internet et de consommation CPU te semble négligeable ou pas (mais la
réponse peut être oui).