Pages :
(reprise du message précédent)

ce serait possible d'avoir le détail de comment on été effectués ces tests?
Modifié par matmat (22 Feb 2008 - 00:15)
matmat a écrit :
ce serait possible d'avoir le détail de comment on était effectués ces tests?

Tests sur un serveur PHP5, cache et optimisers désactivés.

voici le code pour XML :
  $dom = new DomDocument;
  $dom->load("test.xml");

Et celui pour MySQL :
function connexionSQL() {
	$idcom = mysql_connect('localhost','root','root');
	$idbase = mysql_select_db('deust');
	return $idcom;
}

	$idcom = connexionSQL();
	$requete = "SELECT test from test";
	$idresult = mysql_query($requete,$idcom) or die(mysql_error());

	mysql_close();


Avec pour chaque 100 entrées
MySQL : 0.0093
XML : 0.0212

Avec pour chaque 1000 entrées :
MySQL : 0.141
XML : 0.0231

J'ai l'impression que MySQL a un cache, que je n'arrive pas à désactiver. Je crois avoir réussi à faire une requete de chaque sans le cache avec les résultats au dessus.
Le reste du temps, MySQL tourne autour de 0.0010 pour 100 et 0.0040 pour 1000, et pour les 2 cas de figure XML tourne autour de 200

La requête demande pour l'XML :
$start_time = microtime();


	$dom = new DomDocument;
	$dom->load("test.xml");

	foreach ($dom->documentElement->childNodes as $item) {
		$req .=  $item->nodeValue;
	}

$end_time = microtime();

Pour mysql :
$start_time = microtime();

	function connexionSQL() {
		$idcom = mysql_connect('localhost','root','root');
		$idbase = mysql_select_db('deust');
		return $idcom;
	}

	$idcom = connexionSQL();
	$requete = "SELECT test from test";
	$idresult = mysql_query($requete,$idcom) or die(mysql_error());

	while ($item = mysql_fetch_assoc($idresult)) {
		$req .= $item['test'];
    };
	mysql_close();

$end_time = microtime();

Modifié par warry (21 Feb 2008 - 21:43)
J'ai l'impression que mes calculs n'ont pas grande valeur... Mais apparemment, l'API DOM serait tout de même bien plus lente que MySQL.

Demain, je ferai un test avec un XSL pour avoir une vraie idée, et avec des requetes MySQL équivalentes.
Modifié par warry (21 Feb 2008 - 22:19)
a écrit :
Avec pour chaque 100 entrées
MySQL : 0.0093
XML : 0.0212

Avec pour chaque 1000 entrées :
MySQL : 0.141
XML : 0.0231


Je ne comprend pas trop ces resultats, les résultats sont identiques pour xml avec 100 ou 1000 entrées?
Smiley confused La mer c'est la grammaire et moi je suis dans la chaussure
Modifié par matmat (22 Feb 2008 - 00:16)
Je viens d'effectuer d'autres tests :

Tout d'abord j'ai comparé xml/xsl avec php/mysql en sortant les résultats avec de simple echo :


$result = mysql_query("SELECT title,text FROM article");

$i = 0;
while($arr = mysql_fetch_array($result)){   
  echo '<h2>'.$arr['title'].'</h2>';
  echo '<p>'.$arr['text'].'</p>';
  $i++;
}


vs


$xml = domxml_open_file('data.xml');
$xsl = domxml_xslt_stylesheet_file('template.xsl');
$html = $xsl->process($xml);
echo $html->dump_mem(); 


Les resultats : http://www.smart-com.com.mx/bench/onlyphp.php et http://www.smart-com.com.mx/bench/xml.php
Le résultat est en bas de la page en ms.
On voit que les résultats du xml sont beaucoups plus "stables", le résultat est quasiment tout le temps identique du fait que le cpu tourne beaucoup moins. Par contre en moyenne la solution mysql est légèrement plus rapide.

Seulement amenons maintenant un nouveaux paramètre, personnellement je ne conçoit pas un cms sans utiliser des templates, c'est impossible à gérer au bout d'un moment. Donc le test précédent est faussé vu que la solution xml permet d'utiliser les templates xsl (par ailleurs trés sympa à utiliser) alors que la solution mysql/php pour l'instant nous propose un joyeux mélange.

Pour que l'on puisse réellement comparer les deux solutions il faut rajouter a notre solution mysql un moteur de template. xsl est très riche on ne peut donc pas se contenter d'un petite classe de sortie html, rajoutons Smarty, qui est un moteur performant est reconnu est voyons les résultats http://www.smart-com.com.mx/bench/smarty.php :


require('smarty/libs/Smarty.class.php');

$result = mysql_query("SELECT title,text FROM article");

$i = 0;
while($arr = mysql_fetch_array($result)){   
  $articles[$i]['title'] = $arr['title'];
  $articles[$i]['text'] = $arr['text'];
  $i++;
}

$smarty = new Smarty();
$smarty->assign('articles', $articles);
$smarty->display('test.tpl');


Le xml est largement vainqueur !

Conclusion : Les performances ne semblent donc pas un frein à la solution xml/xls au contraire un avantage, il faut voir maintenant le coté pratique des includes, templates multiples cache etc... mais bon pour ça la seule solution est de commencer a coder le cms...
Modifié par matmat (22 Feb 2008 - 01:35)
Tes résultats correspondent à ce que je commencais à voir au fur et à mesure que j'augmentais le nombre de requêtes. Ce qui me fait peur c'est que je commencais à avoir de mauvais résultats en ajoutant des chargements de nouveaux fichiers (avec php), demain je fais les Bench avec include en XSL pour être vraiment sûr. Mais en même temps tu as bien montré qu'il y avait de la marge par rapport à l'utilisation de templates !

Sinon j'ai commencé répertorier les classes, méthode etc... Si je peux je le recréerai en UML.

Merci beaucoup pour ton aide et bonne nuit !
Modifié par warry (22 Feb 2008 - 02:36)
Salut,

Suis-je médisant ou ai-je raison de penser que vous n'avez pas envisagé grand nombre des problèmes que l'on peut rencontrer en remplaçant une solution fiable de stockage des données (SGBD) par des fichiers sur le filesystem ?
- Gestion des erreurs
- Concurrence
- Transactions
- Indexage des données
- Migration
- ...

Un SGBD est loin d'être quelque chose de simple... Et ne parlons pas de la quantité de fonctionnalités que l'on retrouve dans un SGBD :
- Gestion des contraintes
- Triggers
- Procédures stockées
- Séquences/autoincrement
- ...
Modifié par Julien Royer (01 Mar 2008 - 12:50)
En tout cas j'aime bien l'idée d'utiliser XSLT pour la gestion des skins, c'est tout à fait ce que je cherchais pour mon CMS. En supposant que je le finisse un jour ça en fera parti. Smiley langue
Julien Royer a écrit :
Salut,

Suis-je médisant ou ai-je raison de penser que vous n'avez pas envisagé grand nombre des problèmes que l'on peut rencontrer en remplaçant une solution fiable de stockage des données (SGBD) par des fichiers sur le filesystem ?
- Gestion des erreurs
- Concurrence
- Transactions
- Indexage des données
- Migration
- ...

Un SGBD est loin d'être quelque chose de simple... Et ne parlons pas de la quantité de fonctionnalités que l'on retrouve dans un SGBD :
- Gestion des contraintes
- Triggers
- Procédures stockées
- Séquences/autoincrement
- ...

Non c'est exact, mais dans un autre sens, une récupèration de sémantique à l'intérieur d'une BDD n'est pas facile non plus. Et comme cité plus haut, ce serait vraiment pour des sites de petites et moyennes taille Smiley smile

Je suis extrêmement débordé depuis une semaine, et encore pour une semaine ! J'essaierai de développer un peu pour mes trucs persos. Sinon j'ai trouvé un script PHP qui ressemble un peu à ce CMS (dans le principe), mais utilise MySQL : Pure Edit. C'est un script qui s'occupe uniquement de remplir la bdd en analysant les BDD déjà construite, au lieu de créer des XML à partir de XML templates.

Bon dimanche soir à tous !
Bonjour,

Je remarque cette discussion bien tard, mais à tout hasard :

J'ai développé il y a 4 ans un ensemble XML XSLT PHP pour le développement et la maintenance de sites web. Il n'y a pas d'interface pour manipuler ces outils. Mais le principe de fonctionnement doit se rapprocher de la vision exposée au début de la discussion :
- un modèle XML décrivant l'intégralité de la structure du site web
- des fichiers XML de contenus
- une transformation XSLT qui rassemble soit les contenus d'une page, soit même l'ensemble de tous les contenus d'un site
- un second niveau de transformation XSLT qui applique les templates de structure des pages web

Le système automatise à partir du modèle certains aspects tel que la création des menus, le plan du site ou plans de rubrique.

Je peux éventuellement fournir les fichiers.
Xavier a écrit :
Bonjour,

Je remarque cette discussion bien tard, mais à tout hasard :

J'ai développé il y a 4 ans un ensemble XML XSLT PHP pour le développement et la maintenance de sites web. Il n'y a pas d'interface pour manipuler ces outils. Mais le principe de fonctionnement doit se rapprocher de la vision exposée au début de la discussion :
- un modèle XML décrivant l'intégralité de la structure du site web
- des fichiers XML de contenus
- une transformation XSLT qui rassemble soit les contenus d'une page, soit même l'ensemble de tous les contenus d'un site
- un second niveau de transformation XSLT qui applique les templates de structure des pages web

Le système automatise à partir du modèle certains aspects tel que la création des menus, le plan du site ou plans de rubrique.

Je peux éventuellement fournir les fichiers.


Bonjour,

Cela peut effectivement être très intéressant, au moins pour voir la façon dont tu as procédé. C'est une version stable ? 2crite en php4 ou php5 ? Je serais vraiment curieux de voir comment tu as abordé l'arborescence, et la gestion des templates XML Smiley smile

Je suis dispo sur MSN et MP.
Merci à toi !
Je ne sais pas si la notion de stable a vraiment un sens, vu que je fais un usage strictement interne de l'outil. Il n'y a pas de gestion de versions. En revanche, cela fonction bien. Je gère plusieurs sites de cette façon, le plus volumineux ayant probablement environ 200 pages.

La partie php existe en php4 et php5, mais cela fait longtemps que je n'utilise plus php4.

J'ai oublié dans mon précédent post de préciser l'une des fonctionnalités de l'outil :
- soit application dynamique des templates sur les contenus (j'utilise cette possibilité lors du développement d'un site)
- soit génération en back office de toutes les pages web du site
Il est également possible d'utiliser un mixte des 2, c'est ce que je fais en production habituellement. Dans ce cas le php reprend la main lorsqu'un contenu statique fait défaut, soit pour proposer une page d'erreur, soit au contraire pour effectuer une redirection (301 par exemple).

De façon connexe, j'ai développé un autre outil XSLT qui peut être intégré à un CMS.

Communique moi ton mail par MP, je te t'enverrai un site web complet afin que tu te fasses une idée.
Bonjour tout le monde !

Un léger déterrage de post, pour montrer ce que j'ai fait pour le moment (et montrer que malgrès le peu de temps que j'ai, ca avance). A l'heure d'aujourd'hui c'est super léger (en fonctionnalités), il reste un bug, et des tas de fonctions à implémenter/améliorer. J'ai nommé ça alpha01, parce qu'il n'y a rien avant alpha !

Donc les script peuvent uniquement créer un formulaire depuis un template xml, et enregistrer le XML, et encore, vu que les boucles sont pas encore gérées. Si vous voulez quand même tester et peut-être me faire quelques feedbacks ce serai cool !

le fichier est ici : www.warry.fr/cms_alpha01.zip
Il faut changer les variables dans www/moteur/classes/variables/configuration.php et ca roule.

Have fun !
Au passage :

@Xavier : je n'ai pas réussi à faire marcher ton code, et j'avoue que je n'ai pas eu le courage de me plonger dans les entrailles pour le moment !
Bonjour,

Notre société (ircf.fr) développe un gestionnaire de contenu libre basé sur XML, XSL et XSD : http://mapixcms.org

Site de démo : http://demo.mapixcms.org
Site de téléchargement : http://sourceforge.net/projects/mapix

Au niveau de l'arborescence du site, la version actuelle (0.8) utilise un langage "mapix" basique qui permet de définir l'arborescence des pages, les templates et les contenus. Pour plus d'infos sur ce langage, le mieux est de lire le fichier README.

La dernière version (0.9) sortira à la fin du mois et apportera des améliorations à ce niveau là, notamment :

- L'inclusion de plusieurs sitemaps
- L'utilisation d'expressions régulières pour les url des pages
- L'utilisation de contenus et templates globaux
- ...

Tu peux d'ailleurs récupérer cette version sur le CVS (pas tout à fait finalisée, mais largement utilisable) : http://sourceforge.net/cvs/?group_id=196990
ou si tu veux simplement voir les codes sources :
http://mapix.cvs.sourceforge.net/mapix/
(je te recommande le fichier README, les fichiers /maps/*.map ou encore le noyau /.core/mapix.php)

Une version ultérieure pourrait utiliser le langage XPL. (pour l'instant le langage "mapix" nous semble plus simple).

Je suis à ta disposition si tu as des questions.

Mathieu.
Modérateur
Hello,

Je viens aussi de découvrir ce sujet... (hum, pour une fois que j'en loupe un ! Smiley lol )

Bon, ben je n'ai pas regardé toutes les solutions proposées dans ce sujet (désolé) mais, pour ma part, j'ai aussi développé un outil basé sur xml/xslt pour les besoins de ma boîte donc si ça peut donner des idées...

Mon but, pour cet outil, n'a pas été, à proprement dit, de faire un cms mais juste un outil de travail m'offrant :

- divers raccourcis pour augmenter ma productivité
- la possibilité de définir un modèle unique en un seul endroit (plutôt que d'avoir à taper de multiples copier/coller)

Si je dois prendre en compte le stockage des données, j'opte la plupart du temps pour une centralisation des données que je diffuse dans un xml et d'une conservation des données impliquant des interactions dans une bdd afin d'éviter divers problèmes tels les accès concurrents.

Après, le principe de base a été de repondre complètement xhtml (dans le but de conserver la souplesse du langage) mais de manière templatisable et d'ajouter, suivant les besoins, de nouvelles balises représentant des blocs complets; cela me permet, lorsque j'ai déjà établi un bloc à onglet (par exemple) de simplifier sa mise en place (en chargeant automatiquement le xhtml, le css et le js qui vont bien) sans pour autant tomber dans le travers du cms qui contraint forcément à restreindre les possibilités de paramètrage.

En bref, à la différence du cms, j'offre des raccourcis mais n'oblige pas l'utilisateur à s'en servir.
Modifié par koala64 (23 Sep 2008 - 13:37)
Bonsoir les gens ! Heureux que ce topic renaisse Smiley smile

J'ai téléchargé l'archive de mapix, et, bien que cela ne fonctionne pas pour le moment chez moi, je trouve le code d'une très grande clarté, et je te lance un très grand chapeau pour le boulot réalisé ! J'aimerai bien que mon projet puisse aboutir un jour. Il y a de grandes similitudes entre ce que j'ai fait pour le moment, et mapix. J'utilise XLL et des pseudo-DTD qui permettent à la fois de définir mon arbre XML et mon formulaire. Cela fonctionne pour des inputs text, mais je ne me suis pas encore penché sur tous les autres éléments.

J'ai eu une dure journée, donc je vais couper court, et je vais essayer de faire marcher mapix Smiley smile

Have fun !
Bonjour,

Pour ceux que çà intéresse, je viens de sortir Mapix CMS 0.9.3 au début du mois, alors j'en profite pour faire ma pub Smiley cligne

Voici les nouvelles fonctionnalités :
- Améliorations du langage de pipeline : inclusion de fichiers map, expressions régulières dans les URL des pages, système de cache plus précis (pages, contenus ou templates), possibilité de définir un fichier index.map dans chaque dossier pour définir un pipeline local...
- Gestionnaire de paquets pour ajouter/mettre à jour/supprimer des fonctionnalités : pour l'instant les paquets suivants sont disponibles : noyau, commun, admin, demo, doc, dépôt (pour héberger un dépôt de paquets sur son serveur)
- Un éditeur de fichiers SVG en ligne (dessin vectoriel au format XML)
- Amélioration de l'explorateur de fichiers : sauvegarde/restauration, verrouillage/déverrouillage, décompression d'archive ZIP (pas encore la compression Smiley cligne ).

Pour plus d'infos sur les nouvelles fonctionnalités, vous pouvez consulter la doc sur http://mapixcms.org/doc (uniquement en Anglais actuellement).

La version stable 1.0 de Mapix CMS devrait sortir vers le mois de juin 2009 et apportera une nouvelle interface d'administration plus intuitive et plus orientée CMS :
- Un système d'onglets avec Explorateur de pages/Explorateur de fichiers
- Un système d'onglets pour l'ouverture de plusieurs documents
- Beaucoup de fonctionnalités "Ajaxifiées" pour accélérer le fonctionnement du back office.

Voilà, n'hésitez pas à apporter vos commentaires et vos bogues sur le tracker de sourceforge.

Merci et à bientôt.

Mathieu
Développeur Mapix CMS.
bonjour,

j'utilise Smarty est c'est vraiment impeccable pour le coté gestion View des applications.
Mais je voulais surtout pointer vers une utilisation qui pouurrait t'intéresser , à savoir
l'utilisation de Xform et celle plus particuliere de Xsltform

une auttre option est l'utilisation de Ruby !

il me semble que cocoon est basé sur Xml également (mais ce n'est pas vraiment un CMS)
voilà quelques "idées" en vrac !!

++
Pages :