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 :

Optimisation de script


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Femme Profil pro
    Consultante LIMS
    Inscrit en
    Avril 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultante LIMS
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2009
    Messages : 145
    Par défaut Optimisation de script
    Bonjour,
    Je me retrouve face à un problème d'optimisation de mon script.
    Je veux vérifier si mon fichier ne contient absolument aucun identifiant!!

    Jusqu'ici je ne m'étais jamais retrouvé avec ce cas de figure, une suffisament impotante pour avoir le message "Maximum execution time of 30 seconds"

    Pourriez-vous m'aider à optimiser mon script
    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
     
    	case "description":
    		$file = fopen("../tmp/derniersResultats.txt", "r") or die("<strong>Can not open file </strong>");	
     
    		if ($file) {
    		$cmpt=0;
    		$empty="";
    			while (!feof($file)) {
    			$cmpt++;
    			$empty=$empty.fgets($file, 4096); 
    			}	
    		}
    		fclose($file);
     
    		$_SESSION['CMPT'] = $cmpt - 1;
     
    		if ($empty==""){
    			$_SESSION['ERROR'] = ('Your set is empty,<br> please type in an other request');
    			header("location:../pages/acceuil2.php") or die("Can not go to the home page");
    		}
    		else get_description("../tmp/derniersResultats.txt") or die("Can not go to the right path" );
    	break;

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Tu pourrais peut-être utiliser la fonction file qui lit tout le fichier dans un tableau. Il te suffira ensuite de tester si le tableau est vide et d'en récupérer la taille pour obtenir ton compteur. (Je ne garantis pas que ce soit une optimisation, mais c'est au moins une autre façon de faire...)
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre confirmé
    Femme Profil pro
    Consultante LIMS
    Inscrit en
    Avril 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultante LIMS
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2009
    Messages : 145
    Par défaut
    Hmm oui , mais parfois j'ai des fichiers de 1Mo d'ID, et je me retrouve avec un temps d'exécution trop long

    Pourrais tu m'aider a faire un script tu genre si les 3 premières ligne sont vides alors out sinon on continue
    j'ai écrit pour le moment
    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
    	case "description":
    		$file = fopen("../tmp/derniersResultats.txt", "r") or die("<strong>Can not open file </strong>");	
     
    		if ($file) {
    		$cmpt=0;
    		$empty="";
    			while (!feof($file)) {
    			$cmpt++; // j'ai besoin du nombre total d'ID
                            }
                             for ($cmpt = 0; $cmpt < 3; $cmpt++;){
    			$empty=$empty.fgets($file, 4096); 
    			}	
    		}
    		fclose($file);
     
    		$_SESSION['CMPT'] = $cmpt - 1;
     
    		if ($empty==""){
    			$_SESSION['ERROR'] = ('Your set is empty,<br> please type in an other request');
    			header("location:../pages/acceuil2.php") or die("Can not go to the home page");
    		}
    		else get_description("../tmp/derniersResultats.txt") or die("Can not go to the right path" );
    	break;
    Est ce correcte ??

  4. #4
    Membre chevronné Avatar de Inazo
    Profil pro
    Gérant - société de développement web
    Inscrit en
    Avril 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Gérant - société de développement web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 417
    Par défaut
    Bonjour à tous,

    Alors ici ce n'est pas correct :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    while (!feof($file)) {
    			$cmpt++; // j'ai besoin du nombre total d'ID
                            }
                             for ($cmpt = 0; $cmpt < 3; $cmpt++;){
    			$empty=$empty.fgets($file, 4096); 
    			}
    Pourquoi ? Tout simplement que tu vas tourner en rond, car dans ta boucle While tu ne lit pas les lignes du fichier donc tu ne seras jamais en feof, donc le script tournera en boucle sans fin...

    Je vais regarder ton code un peu plus et voir si on peut trouver une solution.

    Cordialement,

  5. #5
    Membre confirmé
    Femme Profil pro
    Consultante LIMS
    Inscrit en
    Avril 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultante LIMS
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2009
    Messages : 145
    Par défaut
    Merci bcp

    Je n'avais pas vu la boucle infinie.........;

  6. #6
    Membre chevronné Avatar de Inazo
    Profil pro
    Gérant - société de développement web
    Inscrit en
    Avril 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Gérant - société de développement web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 417
    Par défaut
    J'ai une petite question :

    si les 3 premières ligne sont vides alors out
    Pourquoi les 3 premières ?

    De plus je n'ai pas bien compris le but de ta manoeuvre...

    Cordialement,

  7. #7
    Membre confirmé
    Femme Profil pro
    Consultante LIMS
    Inscrit en
    Avril 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultante LIMS
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2009
    Messages : 145
    Par défaut
    juste vérifier que le fichier contient bien au moins un identifiant !

  8. #8
    Membre chevronné Avatar de Inazo
    Profil pro
    Gérant - société de développement web
    Inscrit en
    Avril 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Gérant - société de développement web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 417
    Par défaut
    J'en perd mon latin (que je n'ai pas d'ailleurs) :

    Bonjour,
    Je me retrouve face à un problème d'optimisation de mon script.
    Je veux vérifier si mon fichier ne contient absolument aucun identifiant!!
    juste vérifier que le fichier contient bien au moins un identifiant !
    Au moins un ou aucun ? Car si tu en veut au moins un il faut que tu regarde si c'est un identifiant dès que tu lis une ligne de ton fichier.

    Donc dans ton while :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    while (!feof($file)) {
    			$cmpt++;
                             //-- ICI tu vérifie que ta ligne contient ou pas un ID
    			 $LigneCourante = fgets($file, 4096); 
     
                             //-- Donc je ne sais pas comment tu regarde que c'est un ID ou pas et si tu ne devrais avoir que des ID dans ce fichier ou pas, enfin c'est un peu flou ^^
     
                             $empty .= $LigneCourante;
    			}
    Cordialement,

  9. #9
    Membre confirmé
    Femme Profil pro
    Consultante LIMS
    Inscrit en
    Avril 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultante LIMS
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2009
    Messages : 145
    Par défaut
    thx u !!!

  10. #10
    Membre confirmé
    Femme Profil pro
    Consultante LIMS
    Inscrit en
    Avril 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultante LIMS
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2009
    Messages : 145
    Par défaut
    j'ai trouvé plus simple avec filesize et en alliant avec la fonction file que Celira a suggéré
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    		$filename = '../tmp/derniersResultats.txt';	
    		$size = filesize($filename);
    		if($size == 0){
    			$_SESSION['ERROR'] = ('Your set is empty,<br> please type in an other request');
    			header("location:../pages/acceuil2.php") or die("Can not go to the home page");		
    		}
    		else{
    		$lines = file('../tmp/derniersResultats.txt');
    		$_SESSION['CMPT'] = count($lines);
     
    		get_description("../tmp/derniersResultats.txt") or die("Can not go to the right path" );
    		}

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

Discussions similaires

  1. [MySQL] Optimisation de scripts PHP/MySQL
    Par DgG dans le forum PHP & Base de données
    Réponses: 368
    Dernier message: 20/11/2013, 18h59
  2. Optimiser vos scripts
    Par djibril dans le forum Langage
    Réponses: 33
    Dernier message: 11/06/2009, 16h10
  3. [Oracle] Optimisation de script
    Par johnkro dans le forum PHP & Base de données
    Réponses: 26
    Dernier message: 12/07/2006, 10h33
  4. [Débutant] Accélérer et optimiser ses scripts PHP
    Par Metallic-84s dans le forum Langage
    Réponses: 6
    Dernier message: 24/03/2006, 12h37
  5. [MySQL] [Script]Optimisation de scripts Php/MySQL (2)
    Par copy dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 27/08/2004, 08h33

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