Serveur dédié très lent

WRInaute discret
Salut à tous,
j'hébergai mon site sur un Superplan+ d'OVH avec 2 autres sites mais comme je commencai a prendre trop de ressources j'ai repris un Superplan pour mon site uniquement.

Le problème c'est que depuis, il est très lent et difficile d'accès (surtout aux heures de pointes) alors qu'on m'a affirmé que ce serveur serait largement suffisant pour mon site.

Mes stats par mois :
- 17 000 000 hits
- 2 000 000 pages vues
- 70 000 visiteurs
- 75 Go de données transférées
- beaucoup de requêtes SQL...

Je voulais voir les ressources mais pas moyen de faire tourner MRTG correctement :( (les images ne s'affichent pas) : http://ns31145.ovh.net/mrtg/

j'ai donc trouvé une commande en SSH pour voir l'état du serveur (top) :
ssh1.jpg

Le problème vient apparament de la mémoire. Là c'est 2,7Mo de libre sur 128Mo cette nuit à 0H00 mais c'est parfois moins 8O
Quand je redémarre Apache ça tourne mieux mais par mour longtemps :cry:

Je me demande donc ce qui prend autant de mémoire :?:
les images vues (j'en ai beaucoup), les requêtes SQL, les variables PHP :?:

A votre avis, si je passe sur un Superplan+ (avec 256Mo de mémoire) mon site tournera mieux ?

Merci :wink:
 
WRInaute discret
ce qui prend le plus c'est généralement SQL. mais bon Apache / PHP / SQL avec 2K v/j sur un dédié de 128mo, ca peut pas tourner c'est clair.
 
WRInaute impliqué
Oui, le manque de mémoire fait lourdement augmenter la charge, comme l'a dit spijoelx, 128 mo c'est très peu.
 
WRInaute discret
Pourtant d'après leur offre :
OVH a dit:
Idéal pour héberger entre 10 et 50 sites sur votre serveur.
J'en ai qu'un 8O

Donc en passant à 256Mo ça devrait aller mieux ? (le même serveur qu'avant en fait mais je serai seul dessus)
 
WRInaute impliqué
Cela dépend du type de site aussi... biensur si c'est que du HTML les 10 et 50 sites ça passe sans broncher, mais dès qu'il y a un peu de dynamisme... c'est moins évident ;-)

L'utilisation du swap est à combien ?
 
WRInaute discret
Mon site c'est www.magicmanu.com et il y a beaucoup de script, de requêtes mais surtout de grosses images.

Le Swap ? c'est quoi ? c'est pas la dernière ligne de la capture d'écran que j'ai mis avant ?

Sinon il y a aussi des centaines de fichiers dans le dossier /tmp donc certain qui font plus de 300-400 Mo ! On peux supprimer tout ça ?
 
WRInaute impliqué
:oops: j'avais pas vu désolé, oui bon apparement tu swap d'environ 74 mo, le mieux c'est d'éviter de dépasser les 15 mo, donc 256 mo de mémoire devrait régler le problème :)

Personnellement sur 2 Go de mémoire, je swap de 325 Mo, mais cela ne se recent pas sur la rapidité des pages, c'est surrement du au 400 process en cours (apache et mysql).
 
WRInaute occasionnel
C'est ton forum qui doit te bouffer une partie des ressources... c'est classique. As-tu pensé à :

- optimiser tes requêtes ? (certains scripts en font 3 ou 4 -avec parfois des boucles- alors qu'une seule est possible)

- mettre du cache sur les pages plus demandées pour éviter des requêtes inutiles ?

- optimiser au mieux tes images ?

Je ne sais pas quel CMS tu utilises, mais ce sont souvent des usines à gaz.
 
WRInaute occasionnel
Et un vignettage des images en page d'accueil et dans les news en général, t'as une image qui fait au moins 700 pixel de large pour l'afficher en 150/200 pixel, ça te bouffe des ressources pour rien.
 
WRInaute accro
Une question un peu candide :

Comment vous faites pour trouver des serveurs dédiés avec autant de Ram vu que les prix atteignent des sommets plus il y en a ? 8O
 
WRInaute passionné
Effectivement, c'est assez cher, mais pas très dur à rentabiliser, pour gagner faut investir.
 
WRInaute accro
MagicManu> tes statistiques memoire sont parfaitement normales, le 2740k free est au contraire tres bon signe, cela signifie que toute ta ram dispo est "bufférisée" pour y accéder plus rapidement, donc c'est tres bien..

néanmoins, on voit que tu souffres quand meme d'un manque de ram, au vu de tes stats et pour que tu sois a l'aise, il te faudrait:
128 (dispo) + 75 (swap) = 200Mo de ram.. (physique, en barrete donc)

Donc effectivement un passage a au moins 256Mo s'impose.
 
WRInaute discret
pipologue a dit:
- optimiser tes requêtes ? (certains scripts en font 3 ou 4 -avec parfois des boucles- alors qu'une seule est possible)
Je suis en train de regarder à ça, sur ma page d'accueil j'en ai une 20aine !! 8O
J'ai un peu de mal à regrouper différentes requêtes pour UNE table :(
J'ai remarqué aussi que je ne fermais pas toujours les connexions à la BdD (c'est corrigé)

pipologue a dit:
- mettre du cache sur les pages plus demandées pour éviter des requêtes inutiles ?
c'est à dire ? désolé je débute là dedans, c'est mon 1er serveur :oops:

pipologue a dit:
- optimiser au mieux tes images ?
C'est les visiteurs qui les upload (après jugement), c'est limité à 2x120Ko max, je ne peux pas faire mieux, il se plaignent déjà que c'est pas assez :?

pipologue a dit:
Je ne sais pas quel CMS tu utilises, mais ce sont souvent des usines à gaz.
CMS ? c'est quoi ?

pipologue a dit:
Et un vignettage des images en page d'accueil et dans les news en général
C'est déjà le cas, un script crée les miniatures automatiquement :wink:

mahefarivony -> Ok, je vais passer à 256 Mo, faut que je trouve les finances maintenant, il n'y a pas longtemps c'était encore un petit site perso et mon seul revenu pour l'instant c'est les pubs (50 à 60€ par mois) alors que je paye 83€ pour celui là !

En tout cas merci beaucoup à tous pour votre aide, ça fait plaisir d'être sur un forum qui tourne :wink:
 
WRInaute impliqué
300 euros de "loyer" pour moi pour un petit p4c 3,06 ghz, 2 Go de ram et dd scsi avec 20 mbps, que l'on rentabilise assez rapidement en fait, heuresement ;-)
 
Nouveau WRInaute
j'ai eu exactement le meme problème !
dans 90% des cas c'est un site qui a été mal programmé !

dans ce genre de situation, il fo optimiser ses requetes SQL, utiliser un bon schéma de table, mettre des clef PRIMAIRE et des index aux table etc...
savoir réduire ses requetes au maximum et utiliser les jointures, ne pas utliser le "SELECT * FROM" mais plutot "SELECT id, name, ville FROM"
Si par exemple tu utilise des requetes pour afficher exactement les meme infos, il est inutile de mettre des requetes, fé le une fois puis prend la source HTML et colle le !

Tu peut utiliser des caches, le but de ce truc est que PHP va sauvegarder le resultat d'une page avec des requetes dans un fichier texte et a un temps donnée, PHP va comparer la date et l'heure du fichier texte pour pouvoir si oui ou non réutiliser les requetes SQL. si tu a mis un cache de 1h00, PHP va utiliser le fichier texte au lieu faire des requetes SQL. au bout d'une heure, un internaute va sans le savoir réamorcer le cache en rafraichissant les requetes, d'ou un nouveau résultat de page qui sera sauvegardé.

D'autre problème peut apparaitre, il suffit de voir le Proccessus MySQL dans ton phpmyadmin et savoir si tu a une liste de requetes en cours d'éxécution.
Tu peut faire en sorte de réduire le wait_time_out (SLEEP) pour pouvoir tuer le proccessus fantome le plus rapidement possible pour éviter une saturation de max_connection, tu peut aussi bidouiller la configuration de Mysql (/etc/my.cnf)
ou encore bidouiller la configuration d'apache (/REPERTOIRE_APACHE/conf/httpd.conf)
les informations d'apache sont dans le phpinfo(); ou dans le phpmyadmin (phpinfo.php?lang=fr-iso-8859-1&server=1) et pour mysql, tu peu le trouver dans le phpmyadmin (server_variables.php?lang=fr-iso-8859-1&server=1)

tu peut la fonction mysql_free_result(); après chaque requetes
utiliser la fonction mysql_close(); pour terminer la connection mysql

cas concret que j'ai eu, avec la fonction mysql_num_rows();
je voulais compter le nom d'un truc
tu peut l'optimiser en fesant un "SELECT COUNT(id) as nb_id" dans ta requetes
plein de petit chose font que tu peu gagner énorment de ressource

un CMS est un Content Managing System (phpnuke, Pwsphp etc..)

donc avant d'acheter koi ke ce soir, vérifie, ça se trouve c une page php qui demande énormement de ressource et qui peut faire lagger ton server...

a++
 
WRInaute occasionnel
Bizarre que personne d'autre ne conseille d'optimiser le site... et plutôt d'augmenter le matériel. C'est vrai que 256mo de ram, c'est moins cher que d'optimiser, mais sur le long terme...
 
WRInaute discret
Amon-Ra a dit:
j'ai eu exactement le meme problème !
dans 90% des cas c'est un site qui a été mal programmé !
C'est vrai que je me rend compte que mon site devient une usine à gaz :?

Amon-Ra a dit:
Tu peut utiliser des caches
c'est exactement ce qu'il me faut !
ce truc sur ma page d'accueil par exemple :
statsMM.gif

me prend 4 requêtes et est executé des miliers de fois par jour pour rien vue que ça ne change qu'une fois par jour. A mon avis je peux gagner pas mal ici.
Tu as plus d'infos sur les caches ? des liens ?

Amon-Ra a dit:
tu peut la fonction mysql_free_result(); après chaque requetes
Je ne connaissai pas, je ne l'ai jamais vue dans un script

Amon-Ra a dit:
cas concret que j'ai eu, avec la fonction mysql_num_rows();
donc ça :
Code:
$sql_nbsites = "SELECT COUNT(id) as nb_sites FROM $T_sites WHERE activation = '1' ";
$res_nbsites = mysql_query($sql_nbsites);
$sites = mysql_fetch_array($res_nbsites);
$nb_sites = $sites["nb_sites"];
vas plus vite que ça ?
Code:
$sql_nbsites = "SELECT id FROM $T_sites WHERE activation = '1' ";
$res_nbsites = mysql_query($sql_nbsites);
$nb_sites = mysql_num_rows($res_nbsites);
Il y a pourtant plus de ligne !

Amon-Ra a dit:
un CMS est un Content Managing System (phpnuke, Pwsphp etc..)
A part le forum (phpBB) j'en ai pas, le reste c'est du bidouillage :oops:

Merci beaucoup pour ton aide, je me met au boulot !

pipologue > optimiser va me coûter moins cher vue que c'est un site de loisir et que je ne suis pas payé. Donc si je peux éviter de dépenser :p
 
WRInaute passionné
Un copain ma installé sql cache sur un script php très gourmand, maintenent c'est une seule requette d'utilisé par visite au lieu d'au moins 5 ou 6.
Je pense que cela va reelement aider le serveur, de plus, je vais installer sql cache sur mes autres sites également.
 
Nouveau WRInaute
voici un ptit script a propos des cache que j'avais fait pour mon site :

Code:
/**
 * OpenCache()
 * Auteur : Amon-Ra (jc_amonra at hotmail.com)
 *   $ma_rubrique : nom du la Rubrique, dossier au même nom nécessaire dans ./cache/
 *   $file : nom du fichier
 *   $options : différentes données pour différencier les caches
 *   $duree : optionnelle, temps du cache en secondes (infinie par défaut)
 * Vérifie l'existence d'un cache actualisé
 *  -> si oui, ouvre le cache et renvoi false
 *  -> si non, ouvre un nouveau cache et renvoi true
 * Variables globales réservées :
 *   $CACHE_OUVERT, $CACHE_OUVERT_FILE
 * Utilisation :
 *   if (OpenCache(...)) { mes scripts } CloseCache();
 */

function OpenCache($ma_rubrique, $file, $options, $duree="infini") {
  global $CACHE_OUVERT, $CACHE_OUVERT_FILE;
  $file_name = "cache/".$ma_rubrique."/".$file."¤".str_replace("&","~", $options).".cache";
  if (file_exists($file_name) && filesize($file_name) && ($duree=="infini" || ($duree!="infini" && ((filemtime($file_name) + $duree) > time())))) {
    readfile($file_name);
    $CACHE_OUVERT = false;
    return false;
  }
  ob_start();
  $CACHE_OUVERT = true;
  $CACHE_OUVERT_FILE = $file_name;
  return true;
}

/**
 * CloseCache()
 * Auteur : Amon-Ra (jc_amonra at hotmail.com)
 * Met fin à un cache, selon son existence
 * Variables globales réservées :
 *   $CACHE_OUVERT, $CACHE_OUVERT_FILE
 * Utilisation :
 *   if (OpenCache(...)) { scripts } CloseCache();
 */
function CloseCache() {
  global $CACHE_OUVERT, $CACHE_OUVERT_FILE;
  if ($CACHE_OUVERT) {
    if ($fp = @fopen($CACHE_OUVERT_FILE, "w")) {
      fputs($fp, ob_get_contents());
      fclose($fp);
    }
    ob_end_flush();
  }
}

/**
 * DestroyCache()
 *  Auteur : Amon-Ra (jc_amonra at hotmail.com)
 *   $ma_rubrique : nom du module, dossier au même nom nécessaire dans ./cache/
 *   $file : nom du fichier
 *   $options : différentes données pour différencier les caches
 * Supprime un cache. Nécessaire pour l'actualisation des caches infinis.
 */
function DestroyCache($ma_rubrique, $file, $options) {
  @unlink("cache/".$ma_rubrique."/".$file."¤".str_replace("&","~", $options).".cache");
}

Donc il suffit de créer un dossier cache à la racine de votre site avec un CHMOD 777
et des sous dossiers avec les noms de rubriques avec un CHMOD 777 aussi) que vous donnez avec la variable $ma_rubrique.

ce script marche pour tout les CMS
exemple : pour les utilisateurs de phpnuke, il suffit de rajouter ce code au dessus des 3 fonctions ci-dessus :

Code:
GLOBAL $name;
$ma_rubrique = $name;
 
WRInaute discret
Merci pour le script ;)

En gros ça permet de sauvegarder des variables, un peu comme les sessions mais plus longtemps, c'est ça ?

Je l'essaye dès que je peux :D
 
Nouveau WRInaute
ça permet de sauvegarder les infos qui se trouve entre OpenCache() et CloseCache();


exemple avec index.php:

Code:
echo "salut bienvenue sur mon site !";

OpenCache("acceuil", "index", "body", "3600");

REQUETE SQL
REQUETE SQL
REQUETE SQL
REQUETE SQL

ECHO SQL

CloseCache();

echo "a bientot sur mon site";

pour $file, tu peut mettre une fonction automatique pour la détéction de l'url en cours
si c'est monsite.com/index.php alors $file = "index"

pour DestroyCache(); ça pemet par exemple si tu veu virer une image de bagnole de ton site, et bin le DestroyCache permet de supprimer le cache, sinon elle sera toujour en mémoire, pratique si tu a une interface de modération.
 
WRInaute occasionnel
jsé pas comment vous faites pour payer aussi cher l'hosting...
j'ai rarement payé.. y'a tj moyen de négocier avec ton hebergeur ;)
 
WRInaute occasionnel
Autre truc, bcp de webmaster oublient d'optimiser leurs tables en ne créant pas d'index. Les tables d'un forum avec des index bien faits et d'autres sans index... vous voyez la différence de chargement dès qu'elles ont peu remplies...
 
WRInaute discret
Désolé Amon-Ra,j'ai essayé ton code mais je n'ai pas dûs comprendre comment m'en servire :
Code:
if (OpenCache("accueil", "index", "body", "3600"))
{ 
// Réalisations d'hier
$sql_hier = "SELECT id FROM annu_histo WHERE date = DATE_SUB(CURDATE(), INTERVAL 1 DAY)";
$sql_hier_ac = $sql_hier." AND etat = 1";
$res_hier = send_sql($sql_hier,"trouver le nombre de réalisations proposées hier");
$res_hier_ac = send_sql($sql_hier_ac,"trouver le nombre de réalisations acceptées hier");
$nb_hier = mysql_num_rows($res_hier);
$nb_hier_ac = mysql_num_rows($res_hier_ac); 

echo $sql_hier;
}
CloseCache()
Il passe toujours par echo $sql_hier; alors qu'il ne devrait y passer qu'une fois non ?
De plus si je n'execute plus ces requetes il faudrai que je sauvegarde leurs résultat dans le fichier texte et faire une fonction pour relire !

Sinon j'ai mes premières Stats MRTG : http://mrtg.magicmanu.com/
Il y a bien un problème : trop de charge et trop d'occupation mémoire !!
 
WRInaute impliqué
MagicManu > le cache te permet de mettre en mémoire (sur un fichier séparé) les sorties HTML.

donc ça :
Code:
$sql_nbsites = "SELECT COUNT(id) as nb_sites FROM $T_sites WHERE activation = '1' ";
$res_nbsites = mysql_query($sql_nbsites);
$sites = mysql_fetch_array($res_nbsites);
$nb_sites = $sites["nb_sites"];

vas plus vite que ça ?
Code:
$sql_nbsites = "SELECT id FROM $T_sites WHERE activation = '1' ";
$res_nbsites = mysql_query($sql_nbsites);
$nb_sites = mysql_num_rows($res_nbsites);

Il y a pourtant plus de ligne !

Là pour une fois c'est pas le nombre de lignes qui compte (même si d'un côté on parlera de lignes retournées par Mysql).
Dans le premier cas, la requête te retournera le nombre de lignes totales (1 boucle), dans le deuxième cas, ça exécutera la requête ET parcourera toutes les lignes jusqu'à ce qu'il n'y en ait plus. En clair, si t'as 200 résultats, il se retape 200 fois la boucle.

1 contre 200 tu choisis quoi ? :p

Pour information, bien pensées, à 5 requêtes par page ton site roulera sans problèmes. 20 c'est carrément trop sans compter que ça bouffera ton CPU pour rien (surtout si c'est du recalcul de données "statiques").
 
WRInaute discret
Je viens de modifier mes requêtes sur ma page d'accueil avec des COUNT, j'en ai enlevé certaines et optimisé d'autres, j'en ai plus "que" 8 :D
Je vais voir pour optimiser le reste du site...

Pour cette partie :
statsMM.gif

ça irait pas plus vite de créer une image en PHP et de ne refaire les requêtes SQL que lors d'un changement de jour (date du fichier) ?
J'ai vus qu'on pouvai créer des .PNG en dynamique, ça serait interressant dans ce car là :)
 
Nouveau WRInaute
la fonction OpenCache() permet de detecté si il y a un fichier texte du style /cache/accueil/¤index~body.cache

si oui et k'il est inférieur au temps $duree alors il lit le fichier texte et le colle dans le script HTML

su non, il éxécute les infos entre OpenCache() et CloseCache()

pour tester :

Code:
if (OpenCache("accueil", "index", "body", "3600")) 
{ 
echo " mon cul c du poulet";
} 
CloseCache();

éxécute ton script
cela affiche bien "mon cul c du poulet"

maintenant tu modifie ton script php en remplaçant la phrase par "c toi le poulet"

Rafraichi la page et tu aura toujour "mon cul c du poulet "!

fo attendre 3600 secondes pour que le cache se rafrachisse !

voila !!!!
 
WRInaute discret
Ah ok ! C'est plus clair :D Merci :wink:

Donc je peux même sauvegarder du code HTML en cache ? Genre un tableau avec des valeurs, c'est mieux que de faire un fichier par valeur.

Je teste ça se soir et je dis quoi,
encore merci ;)
 
WRInaute impliqué
Oui c'est l'intérêt.
Générer des images dynamiques c'est encore plus lourd que le reste ;)
Mais utiliser le cache à cet endroit t'économisera 4 requêtes et affichera la même chose.
 
WRInaute discret
J'ai gagné pas mal grâce au cache mais depuis hier c'est la cata :

http://mrtg.magicmanu.com

La graphes restent constants et le site est inaccessible :-(

J'ai redémarré le serveur hier à 0H00 mais ça n'a rien arrangé (site accessible 10 minutes).

Savez vous d'où ça peux provenir ?
 
WRInaute impliqué
Et t'as fait quoi depuis hier ?
Fais un petit top ou uptime pour voir la charge serveur. Si y'a rien d'anormal veille à faire un roulement de tes logs (des fois ça grossit, ça grossit pis ça finit par planter le serveur).
 
WRInaute discret
Merci à tous, alors :
Code:
[root@ns31145 root]# top
  3:03pm  up  1:17,  1 user,  load average: 0,32, 0,26, 0,27
97 processes: 91 sleeping, 5 running, 1 zombie, 0 stopped
CPU states:  8,1% user,  2,1% system,  0,0% nice, 89,6% idle
Mem:   247472K av,  227576K used,   19896K free,       0K shrd,   20356K buff
Swap:  522104K av,       0K used,  522104K free                   81812K cached

[root@ns31145 root]# uptime
  3:04pm  up  1:18,  1 user,  load average: 0.31, 0.26, 0.27

Un roulement des logs ? comment on peux faire ça ? c'est pour les effacer ?

Et pour logrotate je ne sais pas comment l'utiliser :-(
 
WRInaute discret
J'ai vue aussi que l'espace libre sur / avait chutté brusquement !!
ns31145.ovh.net_espace-day.png


Sinon j'ai rien changé à part que hier il y a eu 3000 visiteurs contre 2000-2500 d'habitude mais je doute que ça change tans que ça ! 8O
 
WRInaute discret
Bon, c'est un peu de la pub pour mon site mais en même temps on est pile dans le sujet :

http://www.chevrel.org/fr/optimiser/

Ah et puis optimise tes images, rien que sur la page d'accueil j'ai gagné 20ko juste en passant tes images en PNG, certaines images ont été réduties à 10% de leur taille, tu dois certainement les enregistrer en 256 couleurs systématiquement alors qu'elles en ont moins de 16.

Pense aussi à mettre à jour ton forum phpbb, la dernière version est la 2.0.8, beaucoup de bugs corrigés et piobablement des optimisations depuis la 2.0.3 que tu utilises.

Une autre chose qu'on ne t'a pas signalée, mais vu que tu utilises des frames, tous tes visiteurs doivent repasser par la page d'accueil pour aller n'importe où sur ton site, donc tes habitués ne peuvent pas aller sur leur sous-forum directement par exemple, ils doivent faire page d'accueil->forum->sous-forum, ça fait un paquet de requêtes et de données qui partent par la fenêtre pour rien.
 
WRInaute discret
Pour les images les 2 miniatures de droites sont générées automatiquement en PHP et font moins de 5ko pour 16M de couleur.

Pour le forum pas possible, j'ai ajouté pas mal de mods et je l'ai moi même modifié, donc mise à jour impossible.

Des frames ?? J'ai pas de frames ! j'utilise un menu flottant en DHTML sur toutes les pages.

Et merci pour ton site ;)
 
WRInaute discret
euhhh c'est pas des frames ça ? ;-) :
</head>

<frameset cols="0,*" frameborder="NO" border="0" framespacing="0" rows="*">
<frame name="leftFrame" scrolling="NO" noresize>
<frame name="mainFrame" src="accueil.php">
</frameset>
 
WRInaute discret
c'est EXACTEMENT ce que je disais, des tas de requêtes inutiles à tous les niveaux (bande passante, sql, php) pour arriver dans une sous-section dues aux frames.
 
WRInaute discret
8O :roll: je ne comprend pas :oops:

index.htm n'est qu'un cadre qui contient accueil.php mais si je clic sur forums il contiendra index.php du forum mais plus la page d'accueil.

index.htm (le cadre) n'est chargé qu'a l'ouverture du site (- d'1ko) mais plus après pour le basculement entre les pages donc il n'y a pas plus d'accès ou de requêtes :roll:

Si ?
 
WRInaute discret
Exemple : je suis un habitué de tes forums, en particulier le forum concours. Si ton site n'utilisait pas des frames, je pourrais mettre en signets directement l'adresse de la section concours et je m'y rendrai sans passer par ta page d'accueil. Comme tu utilises des frames, l'adresse que j'ai en signet est http://www.magicmanu.com/

Donc je dois passer par ta page d'accueil, puis par la page forum pour ensuite arriver sur la section qui m'intéresse. Donc tous tes habitués visitent des pages pour rien et te consomment tes ressources (tout en gonflant artificiellement le nombre de pages vues).
 
WRInaute discret
Je viens de faire le test et ça marche ! J'ai mis une page d'un forum en favoris, c'est bien marqué http://www.magicmanu.com/ dans la barre d'adresse et pourtant quand j'y retourne ça m'envoie bien sur le forum et non sur la page d'accueil (avec IE6 en tout cas).

Mais bon, je sais que je peux gagner pas mal ailleurs, dans les scripts de la galerie par exemple :roll:
 
Discussions similaires
Haut