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 :

Annulation des doublant entre deux fichiers


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    ray man
    Inscrit en
    Juillet 2009
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : ray man

    Informations forums :
    Inscription : Juillet 2009
    Messages : 274
    Par défaut Annulation des doublant entre deux fichiers
    Bonjour

    J'ai deux fichier texte chaque fichier contient 1M de ligne.

    Je veux bien faire une petite fonction qui va me permettre d'enlevé les lignes qui existe dans le fichier 1 et 2

    Exp:
    Fichier 1 Contient
    Fichier 2 Contient
    En sortie je veux
    Fichier 1 Contient
    Fichier 2 Contient
    Le problème est simple a résoudre je vais imbriqué une boucle dans une boucle
    Prendre un ligne et le tester si il existe dans l'autre fichier.
    Le problème qui s'impose que des fois j'ai des fichier qui dépasse les 7 Million ligne si je fais le truc d'une boucle dans une boucle
    si le premier fichier contient 1 Million et le 2 eme contient aussi 1 Million
    sa va me donné une complicité de 1Million*1 Million

    Es que il ya pas une méthode ou un algorithme qui peux me facilité la vie

    Cordialement,

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Utilise une base, ça sera plus simple

  3. #3
    Membre très actif
    Homme Profil pro
    ray man
    Inscrit en
    Juillet 2009
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : ray man

    Informations forums :
    Inscription : Juillet 2009
    Messages : 274
    Par défaut
    Merci pour repense

    Mais c'est carrément impossible d'ajouté 7 Million de lignes dans une table mysql

    Le mysql ram énormément et php ce plante (j'ai déjà cassé la tète avec sa et je me suis retourné au fichier :s)


    Cordialement

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    en mettant les lignes dans des array, en utilisant array_diff() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    $tableau1 = array ('a','b','c','d');
    var_dump($tableau1);
    $tableau2 = array ('a','k','c','m');
    var_dump($tableau2);
     
    $tableau3 = array_diff($tableau2,$tableau1);
    var_dump($tableau3);
    ?>
    On obtient bien :
    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
    array
      0 => string 'a' (length=1)
      1 => string 'b' (length=1)
      2 => string 'c' (length=1)
      3 => string 'd' (length=1)
     
    array
      0 => string 'a' (length=1)
      1 => string 'k' (length=1)
      2 => string 'c' (length=1)
      3 => string 'm' (length=1)
     
    array
      1 => string 'k' (length=1)
      3 => string 'm' (length=1)
    PS : merci à stealth35 qui m'a appris qu'"il existe des fonctions PHP pour (presque) tout" !
    Il suffit juste de savoir où chercher dans la doc PHP...

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par ryodo Voir le message
    Merci pour repense

    Mais c'est carrément impossible d'ajouté 7 Million de lignes dans une table mysql

    Le mysql ram énormément et php ce plante (j'ai déjà cassé la tète avec sa et je me suis retourné au fichier :s)


    Cordialement
    Mais si c'est possible c'est fait pour, en tout cas c'est impossible à faire avec PHP seul

  6. #6
    Membre très actif
    Homme Profil pro
    ray man
    Inscrit en
    Juillet 2009
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : ray man

    Informations forums :
    Inscription : Juillet 2009
    Messages : 274
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Bonjour,
    en mettant les lignes dans des array, en utilisant array_diff() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    $tableau1 = array ('a','b','c','d');
    var_dump($tableau1);
    $tableau2 = array ('a','k','c','m');
    var_dump($tableau2);
     
    $tableau3 = array_diff($tableau2,$tableau1);
    var_dump($tableau3);
    ?>
    On obtient bien :
    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
    array
      0 => string 'a' (length=1)
      1 => string 'b' (length=1)
      2 => string 'c' (length=1)
      3 => string 'd' (length=1)
     
    array
      0 => string 'a' (length=1)
      1 => string 'k' (length=1)
      2 => string 'c' (length=1)
      3 => string 'm' (length=1)
     
    array
      1 => string 'k' (length=1)
      3 => string 'm' (length=1)
    PS : merci à stealth35 qui m'a appris qu'"il existe des fonctions PHP pour (presque) tout" !
    Il suffit juste de savoir où chercher dans la doc PHP...
    Merci pour la solution c'est impeccable.


    Citation Envoyé par stealth35 Voir le message
    Mais si c'est possible c'est fait pour, en tout cas c'est impossible à faire avec PHP seul
    Oui c'est pour que j'ai opté les fichiers Merci

  7. #7
    Membre très actif
    Homme Profil pro
    ray man
    Inscrit en
    Juillet 2009
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : ray man

    Informations forums :
    Inscription : Juillet 2009
    Messages : 274
    Par défaut
    Merci pour la solution donné Mais malheureusement n'ai pas opté a mon cas

    Voila mon 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
     
    ini_set('memory_limit', '5500M');
        set_time_limit(1000000);
        $fichierRacine=$_POST["fichierRacine"];
        $tab1=file($fichierRacine);
        $fichierElimine=$_POST["fichierElimine"];
        $tab2=file($fichierElimine);
        $tab3 = array_diff($tab2,$tab1);
        $file = fopen ("sorti.txt", "w");
     
        foreach ($tab3 as $t)
        {
            fwrite($file, "$t\n");
        }
        fclose($file);
    je viens de tester ce code sur deux fichier le fichierRacine Contient 1M de ligne et le fichierElimine Contient 2 M.

    Sa fais maintenant + d'une heure et je n'ai pas encore le résultat

  8. #8
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    normale, une base MySQL plus une LOAD FILE sera plus efficasse

Discussions similaires

  1. lister tous les fichiers avec des différences entre deux répertoires.
    Par contremaitre dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 13/03/2008, 15h24
  2. [langage] Passage d objet entre deux fichiers
    Par Slippers dans le forum Langage
    Réponses: 2
    Dernier message: 28/04/2005, 14h45
  3. comment faire des espaces entre deux liens ???
    Par baaps dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 24/03/2005, 09h53
  4. [TP] Echanger des données entre deux programmes
    Par ILIAS Raphaël dans le forum Turbo Pascal
    Réponses: 3
    Dernier message: 22/03/2005, 09h31
  5. Réponses: 7
    Dernier message: 30/12/2004, 12h01

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