Bonjour,
Savez vous s'il existe une fonction ou comment optimiser une recherche récursive dans 3 fichiers ?
J'ai un code qui fonctionne mais sur de gros fichier je vais avoir un timeout.
L'algo est le suivant :
Je prend mon fichier 1 :
Je le lis, ligne par ligne avec ma fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part $AssetExtractFilename = $RootPath."\Datas\Extract\ASSET.txt";
J'extrais le champs 8 qui est le nom de mon serveur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part $champs_array = ReadExtract($AssetExtractFilename);
Ensuite je vais voir dans mon fichier 2 si mon serveur (extrait en champs 8, fichier1) existe :
Et enfin je vais voir dans mon fichier 3 si mon serveur (extrait en champs 8, fichier1) existe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part $champs_array = ReadExtract($SCCMExtractFilename);
A la fin je fait un tableau : fichier 1 existe oui/non, fichier 2 existe oui/non, , fichier 3 existe oui/non.
Code : Sélectionner tout - Visualiser dans une fenêtre à part $champs_array = ReadExtract($CASExtractFilename);
Ce qui donne ça :
FONCTION :
PARCOURS DES FICHIERS (Pour l'exemple j'ai mis que 2 fichiers) :
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 // FONCTION : lecture du fichier et création d'un array multi-dimension function ReadtExtract($Filename) { $champs_array = array(); $lines_array = file($Filename); // on supprime la 1ère ligne (celle contenant les titres) unset($lines_array[0]); // on sépare ensuite les éléments de chaque ligne foreach($lines_array as $line) { //on enlève les " et espaces (surtout à la fin de la ligne) $line = trim(str_replace('"', '', $line)); //on coupe a chaque ; $champs_array[] = explode(";", $line); } return $champs_array; }
Merci d'avance pour votre aide précieuse.
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 $champs_array = ReadExtract($AssetExtractFilename); foreach($champs_array as $champsASSET) { if (!empty($champsASSET[8])) { $MaRecherche = $champsASSET[8]; $champs_array = ReadExtract($SCCMExtractFilename); foreach($champs_array as $champsSCCM) { if (!empty($champsSCCM[1])) { if (strcasecmp(trim($MaRecherche),trim($champsSCCM[1])) == 0) { echo $champsSCCM[1]."<br>"; } } } } }
Partager