Auteur Sujet: Optimisation de requête SQL (forum smf)  (Lu 7870 fois)

0 Membres et 1 Invité sur ce sujet

vetofish

  • Invité
Re : Optimisation de requête SQL (forum smf)
« Réponse #15 le: 12 mars 2009 à 12:28:02 »
Le code semble provenir du fichier load.php, ligne 417 (version 1.1.8) :

// Found 'im, let's set up the variables.
if ($ID_MEMBER != 0)
{
// Let's not update the last visit time in these cases...
// 1. SSI doesn't count as visiting the forum.
// 2. RSS feeds and XMLHTTP requests don't count either.
// 3. If it was set within this session, no need to set it again.
// 4. New session, yet updated < five hours ago? Maybe cache can help.
if (SMF != 'SSI' && !isset($_REQUEST['xml']) && (!isset($_REQUEST['action']) || $_REQUEST['action'] != '.xml') && empty($_SESSION['ID_MSG_LAST_VISIT']) && (empty($modSettings['cache_enable']) || ($_SESSION['ID_MSG_LAST_VISIT'] = cache_get_data('user_last_visit-' . $ID_MEMBER, 5 * 3600)) === null))
{
// Do a quick query to make sure this isn't a mistake.
$result = db_query("
SELECT posterTime
FROM {$db_prefix}messages
WHERE ID_MSG = $user_settings[ID_MSG_LAST_VISIT]
LIMIT 1", __FILE__, __LINE__);
list ($visitTime) = mysql_fetch_row($result);
mysql_free_result($result);
« Modifié: 12 mars 2009 à 12:30:33 par vetofish »

Hors ligne shaitan

  • Habitué
  • **
  • Messages: 142
    • Passion Xbmc
Re : Optimisation de requête SQL (forum smf)
« Réponse #16 le: 12 mars 2009 à 14:17:32 »
Citer
@Shaitan: tu pouvais citer le fofo  , sinon pas de soucis


Tu parles bien de ce forum http://support.smfgratuit.org/ ou l'on trouve de l'aide, des traductions de Mod, des mods, une communauté sympa, la possiblité d'obtenir un forum sur mesure avec pleins de fonctions, un choix énorme de skin ? http://support.smfgratuit.org/
Je ne me le suis pas permis car j'aurais eu l'impression de faire de la pub :))
http://support.smfgratuit.org/
cl1-sq4 , serveur de fichiers 4 et mon Fai est Free.
Et mon site est là: http://passion-xbmc.org/forum/
Quand à mes requêtes elles sont optimisées.

Hors ligne marckisscool

  • Dr TeiGnEuX
  • Expert
  • ****
  • Messages: 549
  • Dr TeiGnEuX
    • smfgratuit.fr
Re : Optimisation de requête SQL (forum smf)
« Réponse #17 le: 12 mars 2009 à 15:06:40 »
@vetofish:
hmmm je suis perplexe là nan parce que là si on compare les 2 requêtes:
Dans ton premier post
Citer
SELECT posterTime FROM smf_messages WHERE ID_BOARD = 1 ORDER BY ID_MSG DESC
Cette requête recherche toutes les dates des messages de la section numéro 1 en classant les posts par id.

et la requête que tu m'indiques:
Citer
SELECT posterTime FROM {$db_prefix}messages WHERE ID_MSG = $user_settings[ID_MSG_LAST_VISIT] LIMIT 1
Cette requête va rechercher UNE SEULE DATE d'un message issue de la dernière visite du membre (pour savoir s'il doit mettre à jour ou pas dans la suite du code).

Pour moi cela n'a pas de rapport et la requête est déjà optimisée.

@shaitan: mdr, j'en demandais pas autant  ^_^, juste le lien  -_-




vetofish

  • Invité
Re : Optimisation de requête SQL (forum smf)
« Réponse #18 le: 12 mars 2009 à 23:59:48 »
Dans le mail de phpnet m'informant qu'une requête était trop longue, après vérification, il y a bien une limite, mais le texte est tronqué à LIM.

J'ai fait un grep sur tous les fichiers SMF, il n'y a qu'un seul résultat qui corresponde (load.php).

C'est dommage, j'étais passé de phpbb à smf car ce forum semblait plus optimisé ... :-(

Hors ligne marckisscool

  • Dr TeiGnEuX
  • Expert
  • ****
  • Messages: 549
  • Dr TeiGnEuX
    • smfgratuit.fr
Re : Re : Optimisation de requête SQL (forum smf)
« Réponse #19 le: 14 mars 2009 à 11:18:53 »
Dans le mail de phpnet m'informant qu'une requête était trop longue, après vérification, il y a bien une limite, mais le texte est tronqué à LIM.

J'ai fait un grep sur tous les fichiers SMF, il n'y a qu'un seul résultat qui corresponde (load.php).

C'est dommage, j'étais passé de phpbb à smf car ce forum semblait plus optimisé ... :-(
C'est bon j'ai trouvé et très franchement phpnet aurait pu être plus explicite dans les informations qu'ils t'ont données.
Ton soucis vient certainement du flux RSS et plus particulièrement de la fonction getXmlRecent() et getXmlNews()se trouvant dans le fichier Sources/News.php
Citer
   $request = db_query("
      SELECT
         m.smileysEnabled, m.posterTime, m.ID_MSG, m.subject, m.body, m.ID_TOPIC, t.ID_BOARD,
         b.name AS bname, t.numReplies, m.ID_MEMBER, mf.ID_MEMBER AS ID_FIRST_MEMBER,
         IFNULL(mem.realName, m.posterName) AS posterName, mf.subject AS firstSubject,
         IFNULL(memf.realName, mf.posterName) AS firstPosterName, mem.hideEmail,
         IFNULL(mem.emailAddress, m.posterEmail) AS posterEmail, m.modifiedTime
      FROM ({$db_prefix}messages AS m, {$db_prefix}messages AS mf, {$db_prefix}topics AS t, {$db_prefix}boards AS b)
         LEFT JOIN {$db_prefix}members AS mem ON (mem.ID_MEMBER = m.ID_MEMBER)
         LEFT JOIN {$db_prefix}members AS memf ON (memf.ID_MEMBER = mf.ID_MEMBER)
      WHERE t.ID_TOPIC = m.ID_TOPIC
         AND b.ID_BOARD = " . (empty($board) ? 't.ID_BOARD' : "$board
         AND t.ID_BOARD = $board") . "
         AND mf.ID_MSG = t.ID_FIRST_MSG
         AND m.ID_MSG IN (" . implode(', ', $messages) . ")
      ORDER BY m.ID_MSG DESC
      LIMIT $_GET[limit]", __FILE__, __LINE__);
Et en faite ce $_GET[limit] est une cochonnerie puisque si on regarde bien il est délimité plus haut comme tel:
Citer
   // Default to latest 5.  No more than 255, please.
   $_GET['limit'] = empty($_GET['limit']) || (int) $_GET['limit'] < 1 ? 5 : min((int) $_GET['limit'], 255);
retourner jusqu'à 255 messages dans un gros fil de discussion c'est dangereux pour les ressources d'un serveur, tu peux déjà changer le 255 en 50 ou alors désactiver le flux RSS ce qui obligera les membres à faire l'effort de venir lire le contenu du forum.

En espérant que l'on a mis le doigt dessus  ^_^

« Modifié: 14 mars 2009 à 14:21:58 par marckisscool »

Hors ligne thibaud

  • VIP
  • *****
  • Messages: 3 909
    • http://www.phpnet.org/
Re : Optimisation de requête SQL (forum smf)
« Réponse #20 le: 16 mars 2009 à 08:24:50 »
ce soucis est réglé ou pas ?

on a réactivé la bdd concernée ?
Thibaud GRANGIER
Division Technique mutualise-dedie
PHPNET

Hors ligne marckisscool

  • Dr TeiGnEuX
  • Expert
  • ****
  • Messages: 549
  • Dr TeiGnEuX
    • smfgratuit.fr
Re : Re : Optimisation de requête SQL (forum smf)
« Réponse #21 le: 17 mars 2009 à 08:44:35 »
on a réactivé la bdd concernée ?
oui puisque son forum à l'air d'être en ligne http://www.aquatribu.com/
Par contre il n'est pas à jour sur les soucis de sécurité (il faut impérativement passer la mise à jour 1.1.7 et 1.1.8)
Pour le reste aucune idée.

Est il possible Thibaud d'avoir la fin du message qui a été transmis à l'utilisateur(ou le fichier qui émet cette requête), afin de conforter la théorie du flux RSS:
Citer
SELECT posterTime FROM smf_messages WHERE ID_BOARD = 1 ORDER BY ID_MSG DESC LIMIT

Merci d'avance.