Nombre total de messages

Forum pour rechercher des MODs.
Pas de support dans ce forum

Modérateur: Equipe

Règles du forum
Rappel: Conditions générales d'utilisation de phpBB-fr.com

Attention, aucun support de MODs n'est donné dans ce forum.

Re: Nombre total de messages

Messagepar Jesuisbonpourlhpbb » 24 Oct 2008 à 17:24

Je vais me replonger les mains dans les fichiers très très prochainement mais, mais il y a encore un point qui me trotte dans la tête, celui sur lequel je n'avais pas été assez clair puisque tu me répondais que tu ne comprenais pas bien le sens de ma demande.

Après tout, pourquoi ne pas recalculer le nombre total de posts (avec la fonction que tu as mise au point) à chaque affichage d'un profil de membre ou d'un panneau d'utilisateur de membre ?
(N.B. : je ne sais pas comment demander ce recalcul)

Le calcul se faisant par défaut lors de l'affichage de l'index (à moins que je me trompe sur ce point ci) , je ne pense pas que l'opération de recalcul soit si lourde que cela (et la charge globale ne devrait pas exploser ce n'est pas le genre de pages sur lesquelles on passe sa vie).
Ca limiterait le nombre de fichiers à modifier et marcherait dans tous les cas même lorsque l'on atterrit directement sur les pages en question (ce qui constituerait un avantage sur la solution des sessions) et aurait donc le mérite d'une certaine simplicité (ok un peu moins que la méthode bourrin de la perte de fonctionnalité que je suggérais :oops: ).

(Je pense qu'on aura fait le tour avec cette question ci, merci)
Avatar de l’utilisateur
Jesuisbonpourlhpbb
Posteur néophyte
Posteur néophyte
 
Messages: 38
Inscription: 15 Juin 2008 à 10:21

Re: Nombre total de messages

Messagepar spitfire pat » 24 Oct 2008 à 18:40

je pense que l'opération sur index.php est déjà lourde, et que ça me dérange intelelctuelelment d'avoir à la répéter, mais si tu insistes
alors dans functions.php, avant ?>, tu insères
Code: Tout sélectionner
function count_posts()
{
   global $db, $auth;
   $total_posts = $total_topics = 0;
   $root_data = array('forum_id' => 0);
   $sql_where = '';
   $sql = 'SELECT * FROM ' . FORUMS_TABLE . ' ORDER BY left_id';
   $result = $db->sql_query($sql);
   $branch_root_id = $root_data['forum_id'];
   while ($row = $db->sql_fetchrow($result))
   {
      $forum_id = $row['forum_id'];
      if ($row['forum_type'] == FORUM_CAT && ($row['left_id'] + 1 == $row['right_id']))
      {
         continue;
      }
      if (isset($right_id))
      {
         if ($row['left_id'] < $right_id)
         {
            continue;
         }
         unset($right_id);
      }
      if (!$auth->acl_get('f_list', $forum_id))
      {
         $right_id = $row['right_id'];
         continue;
      }
      $forum_ids[] = $forum_id;
      $row['forum_topics'] = ($auth->acl_get('m_approve', $forum_id)) ? $row['forum_topics_real'] : $row['forum_topics'];
      if ($row['parent_id'] == $root_data['forum_id'] || $row['parent_id'] == $branch_root_id)
      {
         $parent_id = $forum_id;
         $forum_rows[$forum_id] = $row;
         if ($row['forum_type'] == FORUM_CAT && $row['parent_id'] == $root_data['forum_id'])
         {
            $branch_root_id = $forum_id;
         }
      }
      else if ($row['forum_type'] != FORUM_CAT)
      {
         $forum_rows[$parent_id]['forum_topics'] += $row['forum_topics'];
         if ($row['forum_type'] != FORUM_LINK)
         {
            $forum_rows[$parent_id]['forum_posts'] += $row['forum_posts'];
         }
      }
   }
   $db->sql_freeresult($result);
   foreach ($forum_rows as $row)
   {
      if ($row['parent_id'] == $root_data['forum_id'] && $row['forum_type'] == FORUM_CAT)
      {
         continue;
      }
      $total_posts += $row['num_posts'];
   }
   return $total_posts;
}
et, dans memberlist.php et ucp_main.php tu remplaces $config['num_posts'] par count_posts()
Avatar de l’utilisateur
spitfire pat
MOD Contest Winner
MOD Contest Winner
 
Messages: 15310
Inscription: 18 Sep 2004 à 15:43
Localisation: bourgogne

Re: Nombre total de messages

Messagepar Jesuisbonpourlhpbb » 25 Oct 2008 à 02:05

Mais euhhh !!! Mais c'est que je vais culpabiliser !

Je ne veux pas passer pour un breton têtu de chez têtu, je dois surtout pécher par ignorance !
D'ailleurs j'en regrette presque à faire remonter encore ce topic, tant j'ai le sentiment qu'une mise au diapason par messagerie instantanée règlerait le malentendu en moins de 5 minutes !

A l'origine tu réponds de façon superbe à ma demande de modification de l'information présente sur la page d'index en précisant même que "les quelques lignes que je t'ai proposées n'alourdissent pas l'ensemble des scripts".

Du coup je suppose (peut-être à tort) que le recalcul du nombre de post se fait systématiquement lors de l'affichage de la page d'index (celle qui doit être généralement la plus affichée dans un forum) et qu'il n'est pas lourd pour le serveur, d'où ma dernière demande.

Or ce que tu remarques contredit assez fortement ce diagnostic (probablement faux) que je tirais précédemment du haut de mon ignorance honteuse du php.

Pour résumer :
  • L'affichage par défaut de la page d'index d'un forum phpBB 3.02 provoque-t-il systématiquement le recalcul du nombre de posts du forum ?
    Oui ? Non ?

  • L'affichage par défaut de la page d'index d'un forum phpBB 3.02 modifié en suivant tes recommendations du 20 octobre à 17h31 (que cette heure bénie soit louée :oops; ) provoque-t-il systématiquement le recalcul du nombre de posts du forum ?
    Oui ? Non ?

Si c'est la réponse est dans les deux cas oui et à la lumière de ton dernier commentaire, j'en viendrais presque à m'étonner que cette façon de faire ait été retenue par les développeurs de phpBB alors que la table pourrait n'être remise à jour que lorsqu'une action est effectuée ayant une incidence sur le nombre de messages (ajout ou suppression d'un message dans un forum).

En tout cas vraiment merci pour tes réponses expertes, c'est vraiment adorable de mettre la main à la pâte pour aiguiller les gugus dans mon genre :wink:

Et en prime là j'ai vraiment la possibilité de choisir entre plusieurs possibilités !
Avatar de l’utilisateur
Jesuisbonpourlhpbb
Posteur néophyte
Posteur néophyte
 
Messages: 38
Inscription: 15 Juin 2008 à 10:21

Re: Nombre total de messages

Messagepar Mr_Simon » 25 Oct 2008 à 07:25

Pour résumer :
* L'affichage par défaut de la page d'index d'un forum phpBB 3.02 provoque-t-il systématiquement le recalcul du nombre de posts du forum ?
Oui ? Non ?

D'origine NON, on va juste lire la valeur dans le cache, valeur mise à jour lorsqu'on poste ou supprime un message.

* L'affichage par défaut de la page d'index d'un forum phpBB 3.02 modifié en suivant tes recommendations du 20 octobre à 17h31 (que cette heure bénie soit louée :oops; ) provoque-t-il systématiquement le recalcul du nombre de posts du forum ?
Oui ? Non ?

Oui, et on ne peut faire autrement puisque tu désires que l'affichage tienne compte des droits de lecture, de chacun. La toute première solution proposée spitfire pat n'alourdit pas le code (il ne fait que compter les messages dans une requête qui existe déjà)...par contre comme tu veux cette même valeur ailleurs que sur l'index il lui a fallu recréer la requête. Requête assez lourde au sens ou il faut vérifier les droits d'accès de l'utilisateur forum par forum.
Pas d'aide par MP le forum est la pour ça.
Mes mods phpbb3 Ici
Avatar de l’utilisateur
Mr_Simon
Posteur expérimenté
Posteur expérimenté
 
Messages: 325
Inscription: 19 Sep 2007 à 20:31

Re: Nombre total de messages

Messagepar spitfire pat » 25 Oct 2008 à 07:38

Jesuisbonpourlhpbb a écrit:L'affichage par défaut de la page d'index d'un forum phpBB 3.02 provoque-t-il systématiquement le recalcul du nombre de posts du forum ?
non. lenombre de posts est contenu dans la clé 'num_posts' de la table phpbb_config, clé qui n'est mise à jour que quand un post est publié ou supprimé

L'affichage par défaut de la page d'index d'un forum phpBB 3.02 modifié en suivant tes recommendations du 20 octobre à 17h31 (que cette heure bénie soit louée :oops; ) provoque-t-il systématiquement le recalcul du nombre de posts du forum ?
oui, mais sans alourdir le script,puisque, de toutes façons, le forums visibles sont parcourus par index.php, on ne fait qu'ajouter une petite ligne à chaque boucle

Si c'est la réponse est dans les deux cas oui et à la lumière de ton dernier commentaire, j'en viendrais presque à m'étonner que cette façon de faire ait été retenue par les développeurs de phpBB
mais voilà, la réponse n'est pas oui dans les deux cas 8)
alors que la table pourrait n'être remise à jour que lorsqu'une action est effectuée ayant une incidence sur le nombre de messages (ajout ou suppression d'un message dans un forum).
c'est effectivement ce qui se passe
Avatar de l’utilisateur
spitfire pat
MOD Contest Winner
MOD Contest Winner
 
Messages: 15310
Inscription: 18 Sep 2004 à 15:43
Localisation: bourgogne

Re: Nombre total de messages

Messagepar Jesuisbonpourlhpbb » 25 Oct 2008 à 12:37

Ah ba merci à tous les deux pour ces explications j'y vois plus clair !

... mais du coup me vient une idée (peut-être saugrenue, déplacée etc., n'hésitez pas à le dire) de ménager la chèvre et le chou et tout et tout.

Peut-être que ce n'est juste pas possible (ou pas possible facilement) et dans ce cas pas la peine de se casser les pieds, mais voilà les 2 options qui me sont venues à l'esprit avec vous explications sur la base du système de session auquel a pensé spitfire pat:

1) ne forcer la requête de recalcul de posts totaux pour l'utilisateur que lors de l'appel de la fonction pourcentage (sur les 2 pages en questions UCP et memberlist_view) que SI la valeur n'a pas été déjà été recalculée durant la session

2) une solution un peu moins subtile (mais peut-être acceptable intellectuellement en terme de charge du serveur) : effectuer le recalcul de la valeur systématiquement une fois lors d'un début de session pour chaque utilisateur

Ca ne serait pas parfait vu de loin a priori (rappelons que je n'ai qu'une compréhension à la jumelle du mécanisme) parce que les chiffres sortis pourraient être inexacts en cas de modification du nombre de message par un tiers lors d'une session d'un utilisateur (ajout d'un message ou suppression) et dans ce cas là (si je ne dis pas de connerie) la valeur serait potentiellement fausse du nombre de message ajouté ou supprimé durant la session par un tiers (ce qui ne constituerait pas une grosse erreur et serait donc acceptable :) ).

Evidemment si on ne peut pas effectuer de conditionnalité sur la mise à jour de la valeur depuis le début de la session (pour la 1ère idée) ou bien si l'on ne peut pas forcer le recalcul qu'en début de session (et que cela advienne à chaque fois qu'on tombe sur une page de la racine par exemple) les 2 rustines qui m'ont traversé l'esprit ne présentent pas d'intérêt !

Ca va j'ai pas écrit trop de conneries ? :oops:
Avatar de l’utilisateur
Jesuisbonpourlhpbb
Posteur néophyte
Posteur néophyte
 
Messages: 38
Inscription: 15 Juin 2008 à 10:21

Précédente

Retourner vers Recherches de MODs

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

Partenaires : phpBBHacks.com • phpBB-Seo.com • EzCom-fr.com • phpBB3 Styles • phpBB podpora • phpBB Portugal    Liens : Net Avenir • PromoBenef • Ticket Gagnant