OVH Cloud OVH Cloud

Chargement d'images et performances ?

4 réponses
Avatar
p_genieys
Bonjour,

j'ai des images sur mon site que je ne souhaite afficher que pour les
membres
authentifiés. Ces images sont dans un dossier et ne sont pas visibles par
apache
Je souhaite donc créer un script disons image.php qui sera fortement
sollicité
plusieurs images (parfois de grande taille) dans chaque page html
Se pose donc le pb de performance

Je souhaite appeler le script comme ceci
<img src="image.php?img=nomimage">

Existe-t-il une fonction php pour charger un fichier image ?
Est-il mieux de lire chaque image puis de faire un print ?
Est ce mieux de lire l'image avec la fonction "file" en une fois ou
de lire ligne par ligne "fread" ou lire une chaine file_get_contents...

Je sais tester l'authentification rester à trouver une façon plus
simple et performante pour afficher les images.
Merci de votre aide.
Pierre.
-----
Posté via http://www.usenetgratuit.com/ plus de 40 000 newsgroups sur le
Web. Pour signaler un abus : abuse@usenetgratuit.com

4 réponses

Avatar
Pascal (Collectours)
Pierre Genieys wrote:

Bonjour,

j'ai des images sur mon site que je ne souhaite afficher que pour les
membres
authentifiés. Ces images sont dans un dossier et ne sont pas visibles par
apache
Je souhaite donc créer un script disons image.php qui sera fortement
sollicité
plusieurs images (parfois de grande taille) dans chaque page html
Se pose donc le pb de performance

Je souhaite appeler le script comme ceci
<img src="image.php?img=nomimage">
[snip]

Bonjour,
vous pouvez essayer le code suivant :
# les content-type
$content_types = array( 'gif'=> "image/gif"
,'jpg' =>"image/jpeg"
,..autres);

$img = $_GET['img'];

# vérifie qu'on demande bien le bon type, et le prépare
$match_exts = '/.('. implode('|',array_keys($content_types)) .')$/' ;
if (! preg_match($match_exts, $img, $matches)) {
exit;
}

# le bon header
header("Content-type: ". $content_types[$matches[1]] );

# la cuisine pour reconstruire le chemin d'accès réel à l'image
# et qui doit effectuer les véfications de sécurité pour éviter
# les petits malins qui
# passeraient des choses agressives (../..) dans img
$out_img_path = f_la_cuisine_qui_va_bien($img);
# et on transfère l'image
readfile($out_img_path);

Mais comme vous l'indiquez , des problèmes de charge risquent de se
produire.
Personnellement, je reconsidérerais le fait que les images soient dans un
dossier inaccessible à Apache.
Je les mettrais dans un répertoire protégé par une authentification gérée
par le serveur.
http://httpd.apache.org/docs/howto/auth.html#database
Cordialement

Avatar
Guillaume Bouchard
Pierre Genieys wrote:
Existe-t-il une fonction php pour charger un fichier image ?


readfile() ?

Enfin d'un autre coté cela reste quand même degeu :)

--
Guillaume.

Avatar
Vincent Courcelle
"Pierre Genieys" a écrit dans le message de
news:40d9dda1$0$28070$

Existe-t-il une fonction php pour charger un fichier image ?
Est-il mieux de lire chaque image puis de faire un print ?
Est ce mieux de lire l'image avec la fonction "file" en une fois ou
de lire ligne par ligne "fread" ou lire une chaine file_get_contents...



c'est mieux de faire un fpassthru après avoir envoyé les entetes adéquates :
header("Content-type: image/gif");
header("Content-length: ".filesize("image.gif"));

(intervertible avec jpeg evidemmment)

Avatar
loufoque
Pierre Genieys wrote:

Existe-t-il une fonction php pour charger un fichier image ?
header('Content-type: image/jpeg'); // par exemple

readfile('/quelque/part/'.$_GET['nom_image']);

Est-il mieux de lire chaque image puis de faire un print ?
C'est ce qu'on fait, non ?


Est ce mieux de lire l'image avec la fonction "file" en une fois ou
de lire ligne par ligne "fread" ou lire une chaine file_get_contents...
Puisqu'une fonction fait tout d'un coup, pourquoi s'en priver ?


reste à trouver une façon plus
simple et performante pour afficher les images.
Les rendre accessibles par Apache ?


Merci de votre aide.
De rien