WRInaute occasionnel
merci bcp fandecine c nickel l'idée j'ai appliqué ça sur deux de mes site, merci encore
plus one recommended
plus one recommended
as tu lu le code ?mikaweb a dit:Ainsi on update le cache pour bien dire que sa a changé et non le faire chaque 5 minutes ou heures ? Tiens au passage, sa se fait tout seul les 5 minutes ou seulement 5 minutes après le passage de quelqu'un sur la page ?
if (@filemtime($fichierCache)<time()-(3600*24*360)) { //si la page n'existe pas dans le cache ou si elle a expiré
http://www.mondomaine.com/mapage1.html
http://www.mondomaine.com/mapage2.html
http://www.mondomaine.com/mapage3.html
http://www.mondomaine.com/mapage4.html
etc...
BaZouL a dit:EDIT DU 15/05/2008 à 15h00 :
Finalement, j'ai tout réussi tout seul comme un grand
J'ai trouvé mon bonheur avec les fonctions CURL de PHP. Et ce script (chargé de régénérer le cache en "visitant" chaque page qui n'est pas encore en cache) et exécuté en ligne de commande toutes les 25 minutes à l'aide d'un cronjob). Impec' !
Merci quand même Et @+
zeb a dit:Je rêve ou tu prend la tête pour rien ?
si tu gère la destruction du cache avec unlink() après une mise a jour de celle ci tu peut tout autant le régénérer dans la foulée avec un fopen() de l'url ....
pclose(popen('/chemin/vers/script.sh&', 'r'));
Code:
Warning: fopen() [function.fopen]: open_basedir restriction in effect. File(cache/-page.php?cat=football&coupe=monde) is not within the allowed path(s):
[i]ici code php que vous ne voulez pas mettre en cache[/i]
<?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
?>
[i]Votre page PHP ici[/i]
<?php
$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
}
?>
JeunZ a dit:Et je crois que tu as oublié de préciser que c'est un cache d'un an non?
3600*24*360
if (@filemtime($fichierCache)<time()-(3600*24*360))
[i]Votre page PHP ici[/i]
@filemtime($fichierCache)<time()-(3600*24*360)
echo filemtime($fichierCache).'<br/>';
echo time()-(3600*24*360).'<br/>';
echo $fichierCache.'<br/>';
Smarty est un moteur de template mais peut être que maintenant il fait aussi cache html, personnellement je ne connaissais pas cette fonctionnalité et je vois mal le rapport entre un moteur de template et un cache html mais pourquoi pas .mitus a dit:Bonsoir a tous,
Je ne sais pas si cela a été cité. Mais smarty peut répondre a toutes vos questions. Le cache se gère au niveau template. Et il y a une mise en cache (Version html de la page). De plus smarty permet l'utilisation des balise {dynamic} ce qui permet ainsi de laissé dynamic une partie de la page comme un gestionnaire de bannière par exemple.
J'espère que mon post n'est pas hors sujet.
Bonne soiré a vous tous
<?php
$mb_handle = fopen("feed.xml", "rb");
$mb_flux = '';
if (isset($mb_handle) && !empty($mb_handle)) {
while (!feof($mb_handle)) {
$mb_flux .= fread($mb_handle, 4096);
}
$mb_RSS2Parser = simplexml_load_string($mb_flux);
$mb_racine = $mb_RSS2Parser->channel;
foreach($mb_racine ->item as $mb_element) {
$video_id = $mb_element->id;
$video_nom = $mb_element->nom_video;
$video_titre = $mb_element->petite_description;
$video_description = $mb_element->longue_description;
$video_taille = $mb_element->taille;
$video_duree = $mb_element->duree;
$video_scene = $mb_element->scene;
$video_img = $mb_element->meilleur_thumb;
echo '<div class="post">
<h2><a href="video-'.$video_id.'.html">'.$video_titre.'</a></h2>
<p class="postinfo">Durée : '.$video_duree.' | Taille du fichier : '.$video_taille.'Mo | Nom de fichier : '.$video_nom.'.mpg</p>
<p><img src="http://images/'.$video_nom.'/'.$video_scene.'/'.$video_img.'.jpg" class="alignleft" alt="'.$video_titre.'" title="'.$video_titre.'" />'.$video_description.'</p>
</div>';
if($i == 49) break;
$i++;
}
}
fclose($mb_handle);
?>
petitchevalroux a dit:Smarty est un moteur de template mais peut être que maintenant il fait aussi cache html, personnellement je ne connaissais pas cette fonctionnalité et je vois mal le rapport entre un moteur de template et un cache html mais pourquoi pas .mitus a dit:Bonsoir a tous,
Je ne sais pas si cela a été cité. Mais smarty peut répondre a toutes vos questions. Le cache se gère au niveau template. Et il y a une mise en cache (Version html de la page). De plus smarty permet l'utilisation des balise {dynamic} ce qui permet ainsi de laissé dynamic une partie de la page comme un gestionnaire de bannière par exemple.
J'espère que mon post n'est pas hors sujet.
Bonne soiré a vous tous
In short, the point of template engines should be to separate your business logic from your presentation logic, not separate your PHP code from your HTML code.
Je vois pas du tout l'erreur pour la ligne 8 8O , une erreur du type c'est souvent pr une accolade fermante manquante mais ton script semble bon.Audiofeeline a dit:Serais-je invisible ? :cry:
foreach($mb_racine ->item as $mb_element)
Audiofeeline a dit:J'ai un petit souci, j'obtiens un Parse error: syntax error, unexpected $end in /home/site/www/cache-start.php on line 8...
...
<?php
include('header.php'); // 20 lignes de code
/* ici j'ai 15 ligne de code */
include('envoie_mail.php'); // 50 lignes
etc....
?>
if (@filemtime($fichierCache)<time()-(3600*24*360))
if($page != "sitemap.html") {
ob_start(); // on démarre la bufferisation de la page: rien de ce qui suit n'est envoyé au navigateur
}
if($page != "sitemap.html") {
$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);
}
}
Et pourquoi donc ? Y a t'il une différence de vitesse ? des bugs ou autres ?spout a dit:N.B.: évite les short tags <?=$title;?> préfère plutôt <?php echo $title;?>
Ouais en fait je me suis basé sur ce site pour mes templates, en l'améliorant un peu ^^.spout a dit:@Furinkazan
Comme ce système de templates: http://www.massassi.com/php/articles/template_engines/
spout a dit:Mais tu as juste le V et C de MVC, c'est pour ça que je m'étonnais de MVC
N.B.: évite les short tags <?=$title;?> préfère plutôt <?php echo $title;?>
...Furinkazan a dit:Bein non, j'ai : un fichier .tpl.php (le modèle), un fichier .php (le controlleur) et un fichier .css (la vue) ...
J'ai bien séparé la mise en forme, le traitement des données et le design.
milkiway a dit:Alors j'ai mis en place ton système fandecine. Merci... mais ça ne me génère que des fichiers vides! Pourquoi ?
tryan a dit:si elle est à zéro, je l'efface et la remet en cache
Quoi c'est ça une segfault :?:petitchevalroux a dit:..Cela peut arriver aussi lors d'une segfault ...
$contenuCache = ob_get_contents(); // on recuperre le contenu du buffer
//On supprime les caractères inutiles
$contenuCache = str_replace(CHR(10),"",$contenuCache);
$contenuCache = str_replace(CHR(7),"",$contenuCache);
$contenuCache = str_replace(CHR(13)," ",$contenuCache);
$contenuCache = str_replace(" "," ",$contenuCache);
ob_end_flush();// on termine la bufferisation
if($cacheactive == 1) {
$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
}
milkiway a dit:Je vous propose une petite optimisation qui me fait gagner 4 à 10 % de poids sur mes fichiers.
Attention, source illisible après cette manip.
Fonctionne sur tous les navigateurs.
milkiway a dit:Exact, une des lignes fous tout JS en l'air, il suffit de tester en les enlevant une à une pour voir.
finstreet a dit:Je vous montrerais bien des graphs pour vous montrer mais impossible de trouver avec des échelles significatives Bref, un très grand merci à Fandecine.
milkiway a dit:Ca m'intéresse !
As tu trouvé le moyen de glisser des données non cachées en plein milieu des pages ?