Bonjour,
j'ai besoin d'afficher une image personnalisée par un texte (selectionné dans ma base de données), j'utilise donc la librairie GD :
Je veux mettre ceci en cache en suivant cette astuce :
https://www.webrankinfo.com/forum/t/script-mise-en-cache-des-pages-php.28614/
Ce qui donne :
En tout il y'a pas plus de 145 images crées (car 145 textes différents dans ma base de données).
Ce que je souhaite c'est que ça consomme sur le serveur pas beaucoup plus que l'appel d'une simple image.jpg, donc qu'il y'ait un seul fichier cache par image personnalisée par la librairie GD.
Donc une foi la création du cache d'une image, qu'il y ait aucune requête sql ou php autre que la vérif du cache avec php.
Est ce correct comme ceci ou gourmand en ressource serveur ?
Désolé mon post est un peu long mais je suis pas très sûr là.
Merci
j'ai besoin d'afficher une image personnalisée par un texte (selectionné dans ma base de données), j'utilise donc la librairie GD :
Code:
<?php
header ("Content-type: image/jpeg");
$image = imagecreatefromjpeg("image.jpg");
$couleur_texte = imagecolorallocate($image, 255, 255, 255); // Texte en blanc
imagestring($image, 4, 35, 15, "Mon texte ici !", $couleur_texte);
imagejpeg($image);
?>
Je veux mettre ceci en cache en suivant cette astuce :
https://www.webrankinfo.com/forum/t/script-mise-en-cache-des-pages-php.28614/
Ce qui donne :
Code:
<?PHP
$urldemandee=$_SERVER['REQUEST_URI']; //on lit l'adresse de la page
$urldemandee=ereg_replace('/','-',$urldemandee); // on tranforme l'adresse en nom de fichier
if($urldemandee=="-") $urldemandee="-index.html"; // si l'adresse est la racine du site, on ajoute index.html
$fichierCache="cache/cache".$urldemandee; // on construit le chemin du fichier cache de la page
if (@filemtime($fichierCache)<time()-(3600*24*360)) { //si la page n'existe pas dans le cache ou si elle a expiré
ob_start(); // on démarre la bufferisation de la page: rien de ce qui suit n'est envoyé au navigateur
// ici vient normalement la selection du texte dans la base de données, pour l'exemple je met seulement [b]Mon texte ici ![/b]
// création de l'image avec le texte
header ("Content-type: image/jpeg");
$image = imagecreatefromjpeg("image.jpg");
$couleur_texte = imagecolorallocate($image, 255, 255, 255); // Texte en blanc
imagestring($image, 4, 35, 15, "[b]Mon texte ici ![/b]", $couleur_texte);
imagejpeg($image);
// fin de la création de l'image, on reprend le cache
$contenuCache = ob_get_contents(); // on recuperre le contenu du buffer
ob_end_flush();// on termine la bufferisation
$fd = fopen("$fichierCache", "w"); // on ouvre le fichier cache
if ($fd) {
fwrite($fd,$contenuCache); // on ecrit le contenu du buffer dans le fichier cache
fclose($fd);
}
} else { // le fichier cache existe déjà
include ($fichierCache); // on le copie ici
}
?>
En tout il y'a pas plus de 145 images crées (car 145 textes différents dans ma base de données).
Ce que je souhaite c'est que ça consomme sur le serveur pas beaucoup plus que l'appel d'une simple image.jpg, donc qu'il y'ait un seul fichier cache par image personnalisée par la librairie GD.
Donc une foi la création du cache d'une image, qu'il y ait aucune requête sql ou php autre que la vérif du cache avec php.
Est ce correct comme ceci ou gourmand en ressource serveur ?
Désolé mon post est un peu long mais je suis pas très sûr là.
Merci