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

Langage PHP Discussion :

Optimiser recherche dans fichier texte


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 332
    Points : 718
    Points
    718
    Par défaut Optimiser recherche dans fichier texte
    Bonjour,

    J'ai écrit une fonction qui permet de rechercher des lignes particulières dans un fichier texte.
    Or, le fichier commence a être volumineux (13000 lignes pour le moment) et le temps de traitement est de plus en plus long.

    Voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    function interdit($file, $section, $etape)
    {
    		/*Ouvre le fichier et retourne un tableau contenant une ligne par élément*/
            $lines = file($file);
     
            /*On parcourt le tableau $lines et on affiche le contenu de chaque ligne précédée de son numéro*/
            foreach ($lines as $lineNumber => $lineContent)
            {				
                if ((substr($lineContent, 0, 1) != "#")) //on ne prend pas la lignes de commentaires
                {
                    //on découpe la ligne
                    $tab = preg_split("/;/", $lineContent);
                    //si la section est dans une ligne du fichier            
                    if(($tab[2].";".$tab[3]) == ($etape.";".$section))
                    {
    						$positionProduit = array_search($tab[1],  array_reverse($_SESSION['panier']['libelle'], true));
     
                            if ($positionProduit !== false)
                            {                                        
                                    if($tab[0]==$_SESSION['panier']['etape'][$positionProduit])
                                    {
                                            return true;	
                                    }                                
                            }
                    }
                }            
            }    
    }
    Avez-vous des suggestions pour optimiser le temps de traitement?

    Merci

    xavier
    Xavier

  2. #2
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Déjà mettre en cache le résultat de la fonction file me paraitrait pas mal. Il faudrait même y rajouter directement l'enlèvement des commentaires et l'utilisation de preg_split. Si ton fichier est un csv, ce qui a l'air d'être le cas, tu peux te simplifier la tâche en utilisant fgetcsv.

    Le array_reverse ne sert strictement à rien aussi.

    Une dernière remarque, dans les règles de l'art il faudrait mettre tout ça dans une base de données et simplifier la recherche avec les requêtes SQL ce qui serait bien plus performant.
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  3. #3
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 332
    Points : 718
    Points
    718
    Par défaut
    Effectivement, je viens de basculer le contenu de mon fichier dans une base de données, et ça va nettement mieux!!

    Merci du conseil.
    Xavier

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de recherche dans fichier texte
    Par lostsoul dans le forum Général Java
    Réponses: 17
    Dernier message: 13/12/2013, 03h34
  2. [Batch] Recherche dans fichier texte
    Par julien41 dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 11/07/2012, 12h12
  3. [PowerShell] recherche dans fichier texte
    Par noahline dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 16/02/2011, 12h51
  4. Recherche dans fichier texte
    Par billyzkick dans le forum VB.NET
    Réponses: 3
    Dernier message: 20/07/2009, 16h04
  5. recherche debut de ligne dans fichier texte en vba
    Par Mimosa777 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/07/2008, 17h27

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