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 ce code


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Février 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2009
    Messages : 140
    Points : 66
    Points
    66
    Par défaut Optimiser ce code
    Bonjour,

    J'aimerais optimiser une fonction d'une de mes classe car je trouve qu'elle prend pas mal de temps.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    // Transforme un resultSet en tableau associatif
    public function makeTab($result){
    	$arrRes = array();
     
    	$fonction = ($this->typeBase == "MySQL") ? "mysql_fetch_assoc" : "odbc_fetch_array";
     
    	if ($this->nbResultats($result) > 0){
    		while($res = $fonction($result)){				
    			array_push($arrRes , $res);
    		}
    	}
     
    	return $arrRes;
    }
    En fait, selon l'attribut "typeBase" , la fonction a utiliser est "mysql_fetch_assoc" ou "odbc_fetch_array".

    Je pense que le principal à optimiser est la partie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while($res = $fonction($result))
    car à chaque passage dans la boucle on utilise la fonction, et j'imagine que c'est pas vraiment performant

    Vous auriez une idée pour optimiser ce code ?

    Bonne journée à tous

  2. #2
    Expert éminent sénior

    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
    Points : 10 726
    Points
    10 726
    Par défaut
    hello,
    array_push c'est pas fait pour insérer 1 valeur
    fait direct

    après t'as pas trop le choix, c'est comme ça que sa marche, utilise PDO sinon

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Février 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2009
    Messages : 140
    Points : 66
    Points
    66
    Par défaut
    Merci quand même ...

  4. #4
    Expert éminent sénior

    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
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par Xenon03 Voir le message
    Merci quand même ...
    t'as pas PDO ?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2010
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    c'est vrai qu'avec PDO, ce serai top

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
     return $res->fetchAll(PDO::FETCH_ASSOC);
    a++

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Février 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2009
    Messages : 140
    Points : 66
    Points
    66
    Par défaut
    En fait le soucis est que je me connecte à une base Hyperfile, et que je n'arrive pas à utiliser PDO pour ce type de base

    Normalement je fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $connect = odbc_connect($nomDriver,"","")
    Avec PDO :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $connect = new PDO('odbc:'.$nomDriver, '', '');
    Mais l'objet $connect est vide :
    renvoit PDO Object ( )

  7. #7
    Expert éminent sénior

    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
    Points : 10 726
    Points
    10 726
    Par défaut
    normal ca

  8. #8
    Membre actif

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 191
    Points : 275
    Points
    275
    Par défaut
    ca devrai aider ceci, j'ai extrait ca d'un de mes codes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    define('DB_NAME', 'C:\temp\monfichier.mdb');
    define('DB_USER', 'root');
    define('DB_PASS', '');
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	/**
    	 * @param string $db_name
    	 * @param string $db_user
    	 * @param string $db_pass
    	 */
    	protected function odbcConnect($db_name, $db_user, $db_pass){
    		if(is_null($db_name) || is_null($db_user) || is_null($db_pass))
    			die('intance DAO impossible! parametre manquant verifier fichier conf.php');
    		$server = 'odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq='.$db_name;
    		$this->db = new PDO($server,$db_user,$db_pass);
    	}

  9. #9
    Membre averti
    Inscrit en
    Août 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 360
    Points : 396
    Points
    396
    Par défaut
    Salut,

    Ca fait mal de travailler sur ACCESS pour un projet web ??

    A+

    Mathieu

  10. #10
    Membre actif

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 191
    Points : 275
    Points
    275
    Par défaut
    Citation Envoyé par mathieu44800 Voir le message
    Salut,

    Ca fait mal de travailler sur ACCESS pour un projet web ??

    A+

    Mathieu
    clair mais cela dépend de la source qu'on te donne, dans mon cas l'outil de base utilise de l'access et je devais le porter sur une page web.....
    en plus si la source n'est pas sur le serveur web tu rigole déjà moins

  11. #11
    Expert éminent sénior

    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
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par Helfima Voir le message
    ca devrai aider ceci, j'ai extrait ca d'un de mes codes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    define('DB_NAME', 'C:\temp\monfichier.mdb');
    define('DB_USER', 'root');
    define('DB_PASS', '');
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	/**
    	 * @param string $db_name
    	 * @param string $db_user
    	 * @param string $db_pass
    	 */
    	protected function odbcConnect($db_name, $db_user, $db_pass){
    		if(is_null($db_name) || is_null($db_user) || is_null($db_pass))
    			die('intance DAO impossible! parametre manquant verifier fichier conf.php');
    		$server = 'odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq='.$db_name;
    		$this->db = new PDO($server,$db_user,$db_pass);
    	}
    évite de faire des die, y'a aucun controle de l'erreur derriere et en plus c'est un alias, sois utuiliser trigger_error, sois les exceptions, il faut aussi rajouter dans code la gestion des erreurs pour PDO, et faire un bloque try...catch autour de la connexion

Discussions similaires

  1. optimiser le code d'une fonction
    Par yanis97 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 15/07/2005, 08h41
  2. Optimiser mon code ASP/HTML
    Par ahage4x4 dans le forum ASP
    Réponses: 7
    Dernier message: 30/05/2005, 10h29
  3. optimiser le code
    Par bibi2607 dans le forum ASP
    Réponses: 3
    Dernier message: 03/02/2005, 14h30
  4. syntaxe et optimisation de codes
    Par elitol dans le forum Langage SQL
    Réponses: 18
    Dernier message: 12/08/2004, 11h54
  5. optimisation du code et var globales
    Par tigrou2405 dans le forum ASP
    Réponses: 2
    Dernier message: 23/01/2004, 10h59

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