IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

"Kikouloliser" un site : optimisation


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Par défaut "Kikouloliser" un site : optimisation
    Bonjour,

    Sous une question stupide se cache une question d'optimisation.
    Je poste dans "PHP & MySQL" parce que ce sont les outils que j'utilise le plus (donc qui me concernent le plus), mais la question est transposable à toutes les technologies...

    Je vais partir de l'exemple du "Kikoulolisateur" de sites : http://kikoolol.memepasmal.net
    Un exemple du fonctionnement de la "chose" : http://kikoolol.memepasmal.net/?q=aH...yLw%3D%3D&hl=0 (une page de liberation.fr).

    En regardant ce genre de choses, je me pose des questions techniques : pour faire ce type de remplacement, je pars du principe qu'on a une base de données de type "dictionnaire" (mot français - mot illettré) et que les remplacements se font par des preg_replace().
    Dans ce cas, quelle méthode est la meilleure :

    • chercher la traduction de chaque mot un par un (si elle existe) en base ? (donc faire des milliers de requêtes)
    • charger toute la table dans un tableau et utiliser ce tableau pour les rechercher / remplacer ? (donc avoir un énorme tableau en mémoire)
    • autre ?

    Éventuellement aussi, est-ce qu'il n'y aurait pas d'autres méthodes pour faire ce type de substitutions de la manière la plus efficace possible (rapidité et légèreté).

    Merci et bon week-end !

    Alban

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    L'auteur n'a pas re-saisi le dictionnaire en kikoolol, il cherche des bouts de mots a remplacer :
    aut -> ot
    ph -> f
    etc.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Par défaut
    C'est vrai que prendre une traduction français->illettré n'était pas forcément un bon exemple puisque c'est simpliste à faire

    Et dans le cas de quelque chose d'un peu plus poussé, il y a une méthode à préconiser ? Ou ça dépend uniquement de la charge des serveur ? (donc à étudier au cas par cas)

  4. #4
    Membre chevronné
    Avatar de djayp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 295
    Par défaut
    Salut,

    Il faudrait tester l'efficacité des deux techniques mais je dirais que la deuxième solution est la plus rapide, d'autant qu'il est possible de le faire en utilisant qu'une seule fois la fonction preg_replace et deux tableaux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // tableau des mots à remplacer
    $in=array("mot1","mot2","boutdemot","bout de phrase");
     
    // tableau des termes utilisés pour le remplacement
    $out=array("remplacement1","remplacement2","autreboutdemot","autre bout de phrase");
     
    $texte = "mot1 avec un mot2 et un bout de phrase";  
     
    echo preg_replace($in, $out, $texte);
    Avec une page html de qq ko cela prendra un peu de temps c'est sur, mais c'est de l'ordre de qq secondes. Après, rien ne t'empêche de stocker tes mots dans une base de données, que tu charges une seule fois dans tes tableau $in et $out.

    A++

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo