Fork me on GitHub






Re-création de Aquaportail.com en Xoops 2.5.10 avec Newbb 5
Régulier
Inscrit: 26/02/2007 16:00
Messages: 494
Bonjour à tous,
après 13 ans de loyaux services, je vais passer d'une antique version 2.0.1x de Xoops à une version 2.5.10, en y intégrant Newbb 5.0. Actuellement, la version 2.5.10 n'est pas complète, il faut la patcher (longuement...) avec les "repository" du GitHub de Xoops (cf. https://github.com/XOOPS/XoopsCore25/commits/master : près de 100 modifications de code..., cela a été fastidieux!).

Qu'est-ce qui amène ce changement? Les versions de PHP et MySQL se succèdent et les vieilles versions de Xoops ne sont plus adaptées (trop de code à changer). Le trafic sur le site atteint aussi des chiffres, avec environ 800 000 visiteurs uniques par mois (soit environ 1,5 millions de visites et plus de 3 millions de pages), que le serveur (pourtant un joli système...) commence à avoir du mal à digérer avec des temps de réponses de 300-350 ms (au lieu des 200 ms recommandés par Google). Une solution consisterait donc à changer de serveur pour plus puissant (ce qui sera d'ailleurs fait conjointement à l'évolution de la plate-forme).

Mon site Aquaportail dispose de fonctionnalités uniques (dév. perso) avec un url-rewriting maison (plus aucun lien .php mais tout en .html) pour obtenir des url-canoniques efficaces et vraiment uniques, des modules persos (guide des espèces, dictionnaire très amélioré, etc.). En fait, le seul module officiel Xoops visible est le forum NewBB, mais très retouché (voir complètement revu)!!! Les modules News et Smartsection, encore présents, ne sont (surtout) plus mis en avant (beaucoup des articles ont été transférés dans le dictionnaire) et seront supprimés (je teste Publisher).

Le ralentissement du site actuel vient justement de NewBB, dont, pourtant, beaucoup de fonctionnalités ont été supprimées pour gagner du temps sur les tables de données. Toutefois, en accord avec Mamba (célèbre et éminent membre de la communauté Xoops), comme la version NewBB 5.0 est en Beta, nous allons avancer pour obtenir une 5.0 valable. Je ne ferais "mes" modifications qu'avec une version stable et débuguée. Je vais essayer d'apporter mon obole pour accélérer NewBB, hyper-gourmand en ressources! (en supprimant certaines choses, en optimisant les champs des tables [smallint à la place de int par exemple: dans les index, c'est excellent comme modif!], j'ai quand même divisé le temps de réponse par 5 sur la version actuelle!...).

En résumé, c'est un ré-apprentissage de Xoops. Au passage, je regrette qu'il n'y ait pas de documentation actualisée sur la création de modules : je patauge bien (mais il faut comprendre et apprendre ). Si quelqu'un a un lien sympa à ce sujet, j'ai mes propres modules à modifier pour être compatibles avec Xoops 2.5.x.

Pour l'heure, j'ai déjà intégré mon style CSS responsive (très efficace avec juste 20 ko de code CSS et javascript non obligatoire). Quand le site de test sera suffisamment stable et sécurisé, je donnerais le lien.

Posté le : 27/01 13:26

Portail en aquariophilie avec une passion pour le poisson clown en aquariums récifaux.
Partager Twitter Partagez cette article sur GG+
Re: Re-création de Aquaportail.com en Xoops 2.5.10 avec Newbb 5
Semi pro
Inscrit: 08/03/2006 21:08
Messages: 1144
Salut,
je trouve la démarche très intéressante.

Je serai intéressé à voir plus de détails concernant l'optimisation de la vitesse. Quelles sont tes astuces pour améliorer la vitesse d'un module (c'est intéressant pour les de ces modules?

Pour ce qui est du changement de serveur, c'est vraiment nécessaire en sachant qu'avec PHP 7.2 tu augmentes énormément les performances?
Tu utilises le système de cache pour augmenter les performances?

Pour les astuces concernant les modules, tu peux regarder des modules récents pour voir comment créer les choses. Exemple:

https://github.com/GregMage/xmcontent

il existe aussi une documentation intéressante pour l'utilisation de XMF:

https://xoops.gitbook.io/xmf-cookbook/

Je ne comprends pas pourquoi faire plus de 100 modifications pour avoir une version 2.5.10 opérationnelles? La patcher avec quoi? Si tu as des bugs à signaler on est preneur!


Posté le : 27/01 15:12
Partager Twitter Partagez cette article sur GG+
Re: Re-création de Aquaportail.com en Xoops 2.5.10 avec Newbb 5
Admin Frxoops
Inscrit: 04/02/2003 06:41
Messages: 774
En ce qui concerne la nouvelle version de Newbb, il serait bien de séparer tout ce qui s'affiche sur le front-end et le code php, par exemple les boutons éditer, supprimer, répondre qui sont en "dur" dans le code et qui de fait oblige à une modification qui sera perdue lors de la mise à jour. Il en est de même avec les types de sujet qui par exemple ont du css inline pour la couleur ce qui oblige à une petite moulinette pour le passer dans une class du thème. Bon, je chipotte mais lors de la mise à jour du forum, j'ai pas mal galéré pour retrouver les fonctions à modifier, certaines se trouvant directement dans le core de Xoops.

Pour ma part, j'ai viré tout ce qui concerne les tris, les différents types d'affichage, les options de vues par compte, message... pour épurer aux maximum et ne garder qu'un affichage en flat. Bref, soit se servir de canonical pour éviter le duplicate content que cela génère, soit les enlever

Bon, il faut reconnaître que l'on ne fait pas une mise à jour tous les 4 matins sur Xoops comme sur un Wordpress ce qui permet de peaufiner nos "peu" de mises à jour.

Perso, passage en PHP 7.2 avec une 2.5.9 qui est parfaitement fonctionnelle et un Newbb 4.33 en version finale, avec, tout comme JF pas mal de code à modifier pour l'adapter "à ma sauce". Et je revenais d'une 2.0.18.


Posté le : 28/01 10:13

Quand tu montres la lune du doigt, l'imbécile regarde le doigt.
Infos sur TSO et tutos PC sur Tutoriaux PC
Partager Twitter Partagez cette article sur GG+
Re: Re-création de Aquaportail.com en Xoops 2.5.10 avec Newbb 5
Régulier
Inscrit: 26/02/2007 16:00
Messages: 494
@thierry: cool! idem, je vire les 2/3 de NewBB (karma, tris, uniquement du flat, sondages, css pour remplacer les images, etc.)! et je change notamment la function xoops_getrank dans include/functions.php pour éviter un appel sql (un simple tableau suffit: on ne change jamais cela une fois fait)... et plein d'autres optimisations comme ça.

Tu as fait comment pour le transfert de codage des bases (collation et colonnes) en UTF8? Je regarde plusieurs scripts, mais je suis indécis.

@mage: merci.

Il y a plein d'appels à SQL qui sont inutiles (comme celui cité pour Thierry), parfois des appels redondants. Certaines requêtes régulières ne correspondent pas à des index de tables: il faut créer ces index! Passage des champs INT en MEDIUM, SMALL, voire TINYINT (le jour où un site aura besoin d'un INT pour les uid d'utilisateurs par exemple, faudra me prévenir... ), etc... Une seule modification de typage ne change rien, mais 50 ou 100, oui! Utilisez du ENUM au lieu d'un TINYINT (pour les yes/no), etc. Penser à définir en UNSIGNED toutes les colonnes numériques du groupe INT (il n'y a qu'un seul cas où il ne faut pas le faire avec le timestamp), etc. Bref, il y a pas mal d'optimisations dans les structures des tables à faire.

Et puis un jour, il faudra penser à virer certains champs de la table USERS qui: 1- ne sont pas conformes avec la RGPD; 2- devenus complètement obsolètes (YIM, etc.). Toujours dans les structures: ordonnés dès le départ les champs par les plus utilisés (par exemple: inutile de déclarer en 2e colonne un champ presque jamais appelé et 15è colonne un champ très exploité).

Tout ceci constitue des pouièmes de nano-secondes, mais à force, on encombre moins le serveur SQL.

Posté le : 28/01 11:53

Portail en aquariophilie avec une passion pour le poisson clown en aquariums récifaux.
Partager Twitter Partagez cette article sur GG+
Re: Re-création de Aquaportail.com en Xoops 2.5.10 avec Newbb 5
Admin Frxoops
Inscrit: 04/02/2003 06:41
Messages: 774
Citation :
aquaportail a écrit :
Tu as fait comment pour le transfert de codage des bases (collation et colonnes) en UTF8? Je regarde plusieurs scripts, mais je suis indécis.


J'avais dù le faire à la mano si je me rappelle bien mais il y a montuy337513 qui avait fait à l'époque un petit logiciel pour convertir la base de données de ISO vers UTF-8.

http://www.frxoops.org/modules/newbb/ ... id=230174#forumpost230174


Posté le : 28/01 19:35

Quand tu montres la lune du doigt, l'imbécile regarde le doigt.
Infos sur TSO et tutos PC sur Tutoriaux PC
Partager Twitter Partagez cette article sur GG+
Re: Re-création de Aquaportail.com en Xoops 2.5.10 avec Newbb 5
Régulier
Inscrit: 26/02/2007 16:00
Messages: 494
@Thierry: merci! Au passage fais gaffe à un éventuel passage à SQL 8: le mot 'rank' (dans la table USERS) est devenu un nom réservé. Ca tombe bien que ce soit quasiment le premier que je vire de cette table (beaucoup trop lourde).

Par rapport à NewBB, le problème que je rencontre concerne les uploads d'images: à un moment donné, je ne comprenais par pourquoi on ne pouvait plus charger la moindre image... conclusion: trop de fichiers dans le répertoire (plus de 10 000... ) et il a fallu modifier les paramètres de Linux pour accepter plus de fichiers: bingo, perte de perfs! Conclusion, je vais écrire un patch pour les nouveaux uploads classés par année en préfixant les images (2019- + nom d'image généré par Xoops) et les répartir en répertoires, le tout sera invisible pour l'utilisateur avec une règle de ré-écriture en htaccess.

Posté le : 28/01 21:02

Portail en aquariophilie avec une passion pour le poisson clown en aquariums récifaux.
Partager Twitter Partagez cette article sur GG+
Re: Re-création de Aquaportail.com en Xoops 2.5.10 avec Newbb 5
Régulier
Inscrit: 26/02/2007 16:00
Messages: 494
Citation :
mage a écrit :
Tu utilises le système de cache pour augmenter les performances?

J'ai oublié de répondre: non, surtout pas! Je désactive tout. Le système de cache de Xoops est certainement intéressant pour des sites avec un trafic modéré et hébergement-serveur mutualisé, mais il ralentit clairement les pages avec un trafic élevé (trop d'appels sql...). Conclusion, j'utilise memcache pour le chargement du contenu (partie 'content') des pages. Memcache est bien plus efficace. L'habillage n'est pas mis en cache (inutile en fait).

Et je recours à quelques optimisations logiques (mais cela demande de la prog). Par exemple, le bloc 'top 18 des poissons' et 'définitions importantes' qui apparaît à droite dans la partie 'dictionnaire' est un seul bloc "fixe" (qui ne change 'jamais'): inutile de le charger en SQL (ou même memcache), mieux vaut l'intégrer en dur dans le template avec un test "if uri=...".

Posté le : 28/01 21:23

Portail en aquariophilie avec une passion pour le poisson clown en aquariums récifaux.
Partager Twitter Partagez cette article sur GG+
Re: Re-création de Aquaportail.com en Xoops 2.5.10 avec Newbb 5
Régulier
Inscrit: 26/02/2007 16:00
Messages: 494
Pour information, j'ai fait un rétro-pédalage dans mon projet. Xoops 2.5.9(10) est très gourmand en nombre de fichiers chargés et cela fait perdre de nombreux avantages de temps de réponse (même avec des SSD performants) gagné par la rapidité de php 7.3 vis-à-vis de php 5.6.

J'ai donc opté pour une solution mi figue-mi raisin: la plupart des parties importantes de Xoops 2.5.10 ont été intégrées dans "mon" Xoops hyper-personnalisé (basé sur une 2.0.1x). Cela concerne notamment le "kernel", la plupart des "includes" et la quasi-totalité des "class". J'ai évité, comme la peste, XMF (c'est lui le gourmand de l'histoire!!!) et les "preloads" (en fait une cata en terme de perfs selon mes tests), surtout qu'un vrai preload arrive avec php 7.4 (cf. https://wiki.php.net/rfc/preload )! Je vais donc patienter quelques mois pour le preload (très intéressant si bien fait sur un serveur dédié -ne sera vraisemblablement pas exploitable sur mutualisé- ).

En revanche, tous les modules restent ceux de "ma" version, avec les adaptations utiles à php 7.3 (ce qui a nécessité pas mal de ré-écriture de code).

Concernant SQL, toutes les tables sont en utf8bm4 (et non bm3 comme dans xoops 2.5) pour coller aux spécifications et recommandations de MySQL 8 (même si bm3 ne gêne pas, bm4 est plus performant avec MySql 8). Le passage à 8 au lieu de MySql 5.6 demande aussi une adaptation de certains noms de colonne, notamment pour le champ 'rank' dans la table 'users'. Si le staff de Xoops 2.5 a choisi de "quoter" le mot réservé 'rank', j'ai opté pour le renommer tout à fait différemment pour anticiper sur les futures versions de MySql (cela ne touche que 5 fichiers à modifier, hors XMF). D'autres mots deviennent plus ou moins réservés ( https://dev.mysql.com/doc/refman/8.0/en/keywords.html ) avec MySql 8 : principalement 'definition' et 'description' (!). Ceux-ci sont employés dans certains modules, je les ai donc modifiés également (pas obligatoire à l'heure actuelle, mais ça va arriver sous peu, autant anticiper).

Concernant les tables encore, j'ai retouché-réorganisé l'ordre des colonnes de plusieurs tables pour coller aux demandes de MySql 8 en "meilleures" performances (grosso-modo, groupage des colonnes INT -et dérivées- avant les colonnes STR -et assimilées-) et pour consommer moins de mémoire (!!! un avantage de mysql 8).

Posté le : 11/03 16:41

Portail en aquariophilie avec une passion pour le poisson clown en aquariums récifaux.
Partager Twitter Partagez cette article sur GG+
Re: Re-création de Aquaportail.com en Xoops 2.5.10
Régulier
Inscrit: 26/02/2007 16:00
Messages: 494
La nouvelle version d'AquaPortail est en ligne. Au final, voici les actions réalisées:

- passage en PHP 7.3 et SQL 5.7 (sql 8 n'est pas dispo pour le système du serveur dédié).

- mixage du code d'une ancienne version xoops 2.0.1x et de la récente 2.5.10.

- suppression totale de XMF qui est une usine à gaz très gourmande en ressources (adaptation assez légère du code par ailleurs: on peut facilement s'en passer).

- optimisation du code de la 2.5.10 pour les partes reprises (par exemple, inutile de faire un filexist avant un include puisque le include le fait!!! et plein de broutilles comme ça).

- j'ai conservé tous les "vieux" modules qui ont été adaptés à php 7.3 (et d'ores et déjà prévus pour php 7.4 pour le futur système de Preload et la pré-compilation de PHP). Je comptais utiliser NewBB 5, mais c'est devenu une usine à gaz pour le code avec beaucoup trop de fichiers à maintenir: j'ai adapté mon ancienne version.

- suppression du système de cache de Xoops au profit de Memcached (il faut un serveur dédié, ça ne fonctionne pas sur du mutualisé: le cache Xoops est alors très utile!).

Et voici en image, le résultat en vitesse pour la page d'accueil du site (je crois que c'est parlant):

Open in new window

Posté le : 15/04 19:33

Portail en aquariophilie avec une passion pour le poisson clown en aquariums récifaux.
Partager Twitter Partagez cette article sur GG+

 Haut   Précédent   Suivant




Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

45 Personne(s) en ligne (30 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 45 | Plus ...