PHP : Expressions regulieres (pour du bbcode), questions de performances

Bonjour,
Pour mon site, j’utilise les expressions régulières pour transformer du bbcode en xhtml.
J’ai remarqué que le temps d’exécution était nettement plus rapide sans utiliser ces expressions, donc j’ai quelques questions : (je possède un serveur très peu puissant, donc ce genre de questions est important pour moi)

  • Est ce qu’il est mieux de mettre du texte déjà transformé en xhtml (par les expressions régulières ) dans la base de donnée ? ou de mettre le texte original dans la bdd et transformer ce texte a l’affichage ?

  • Ou alors il faut utiliser un système de mise en cache ?

  • Vous pouvez pas jeter un coup d’œil a ma fonction de transformation (Site down) ? et me dire ce qu’il nest pas conseillé, ce qui prend trop de ressources ?

Merci d’avance :jap:
Edité le 20/02/2008 à 12:13

Je dirais qu’un cache c’est mieux. Pose toi la question autrement: si tu stockes la version parsée en xhtml, il faut que tu gardes l’équivalent bbcode en base ou ailleurs, ou que tu ai un moyen de retrouver le bbcode à partir du xhtml.

Ah oui, ca pose problème après pour editer un article :stuck_out_tongue:
Bon je vais voir du coté de la mise en cache.

Il me semble avoir lu qu’il valait mieux faire :


fonction_de_remplacement("schema1", "remplacement1", $cible);
fonction_de_remplacement("schema2", "remplacement2", $cible);
fonction_de_remplacement("schema3", "remplacement3", $cible);

Que :


$schemas = array("schema1", "schema2", "schema3");
$remplacements = array("remplacement1", "remplacement2", "remplacement3");
fonction_de_remplacement($schemas, $remplacements, $cible);

Source : 12 astuces d’optimisation de performance PHP[/url] ([url=http://www.prendreuncafe.com]prendreuncafe.com)
Edité le 16/09/2007 à 17:12

Ah oui ? tu es sur pour le remplacement par tableau ? j’aurais jurer le contraire…
Sinon dans ton lien, il ne parle pas de remplacement par tableau, mais le reste m’est utile :slight_smile:

Si, regarde le point 8 :[quote=""]
L’emploi de tableaux en tant qu’arguments des fonctions de remplacements de chaînes de caractères est plus couteux que l’utilisation multiple de cette même fonction chaîne par chaîne à remplacer.
[/quote]
:slight_smile:

C’est aussi la methode que j’utilise. Je trouve ça plus clair et plus pratique, apparament c’est également plus rapide.
Tu devrais mettre ton lien dans le topic des adresses utiles, Raynor :wink:

ah oui, j’avais pas vu :ane:
Sinon, avec le système de cache, ca va 2 fois plus vite pour mon site :slight_smile:
Edité le 16/09/2007 à 18:34

Moi, je te conseil de bien optimiser ton code PCRE en utilisant bien les délimiteurs et les options.
De plus, pour une génération plus rapide, fait une boucle, c’est natif :wink:

Edit:
Attention, tu laisses une entrée directe sur ta FBX. (Voir ton ip)
Edité le 17/09/2007 à 10:30

Dans quel sens tu entends cela?

Ce que je veux dire, c’est que les regex utilisent beaucoup de ressources quelles soient POSIX ou même PCRE.
Les regex effectuent un calcul sur toutes combinaisons possibles.
Il est donc préférable de boucler en faisant travailler php au natif plutôt que de faire travailler une extension (regex).

Edit :
Correction orthographique :frowning:
Edité le 17/09/2007 à 11:47

Euh comment ca ?

Euh comment ca bis ? :ane: en gros tu dis qu’il vaut mieux utiliser str_replace et autre que les expressions regulieres ? (ca je suis au courant)
Edité le 17/09/2007 à 13:53

Tu donne une ip direct vers ta FreeBox ! Fais gaff :slight_smile:

Ce que je veux t’expliquer, c’est qu’il vaux mieux séparer tes regex !
Aller… un exemple, c’est cadeau :

http://www.wasium.fr/public/replace.phps
Edité le 17/09/2007 à 13:59

str_replace sera mieux que preg_replace, oui.

Là, je dit non !
Du POSIX contre du PCRE…
PCRE gagnant !

Faites le test : lumadis.be…

? (j’ai mis str_replace pas ereg :))

ceci dit, un truc car je suis un jeune con : en quoi faire une boucle en php (donc gestion interne de php, etc) est plus lent que de passer à preg_replace deux tableaux? (sachant que le test sur les tableaux est toujours fait).

Ouais je suis pas inspiré pour trouver un nom de domaine :smiley:
sinon, normalement tout est bien sécurisé chez moi (normallement hein) je vois pas en quoi ça pose problème ?

Merci bien :jap:
Edité le 17/09/2007 à 18:16

Pour l’ip, c’était pour rire :wink:
Humour space, je l’accorde :slight_smile:

J’ai fait une serie de test (temps d’execution du script), et apparemment, ma méthode est un tout petit peu plus rapide…
Apres il n’y a sûrement pas que le temps d’exécution qui signifie quelque chose ? l’occupation memoire aussi ?

Zakimak a l’esprit PHP ! 8)