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

PHP & Base de données Discussion :

Optimisation de scripts PHP/MySQL [Débat]


Sujet :

PHP & Base de données

  1. #101
    Membre à l'essai
    Inscrit en
    Février 2004
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 32
    Points : 22
    Points
    22
    Par défaut
    Moi j'en avais une autre:vaut-il mieux utiliser des fonctions mysql ou php ?
    Mysql ! Faut faire des requetes qui te génère les resultats pret à etre affiché ... Utilise par exemple les fonctions de formatage de date de ta BD plutot que celui de php...

    Mais j'ai aussi une question qui se raproche de celle de despe974 !!
    Je suis sur un projet actuellement que je dev en php (c'est un vrai soft à lui tout seul) et j'aurais bien structurer le projet comme je l'aurais fait en java par exemple (Tout objet casiment) mais j'ai eu peur de devoir faire des includes de pages contenant 1000000000 de lignes avec toutes mes classes qui au final ne seraient pas toute utilisées dans chaque page.

    Alors est ce que le fait de faire des includes de "porc" va entrainer une grosse charge et un ralentissement ?

  2. #102
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2002
    Messages : 299
    Points : 373
    Points
    373
    Par défaut
    Ma solution : utiliser des include_once uniquement pour les libs utiles dans toutes les libs qui en dépendent. Comme ça les modules ne sont chargés qu'en cas de besoin.
    PEAR::Cache_lite fait pareil, il ne charge le coeur de pear qu'en cas de besoin (en cas d'erreur en fait)

  3. #103
    Membre à l'essai
    Inscrit en
    Février 2004
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 32
    Points : 22
    Points
    22
    Par défaut
    Le include_once ne se charge qu'en cas de besoin ?
    C'est ce qu'il me faut mais j'ai pourtant pas vu ca dans la doc ...
    http://fr2.php.net/manual/fr/function.include-once.php

  4. #104
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2002
    Messages : 299
    Points : 373
    Points
    373
    Par défaut
    Non, j'ai mal expliqué : tu ne mets des include_once que dans les fichiers qui ont besoins d'autres fichiers, au lieu d'inclure tout ce qui peut être utile au début.
    Genre classefille.php inclue classemere.php qui inclue commun.php
    et classefille2.php inclue classemere2.php qui inclue commun.php
    Dans une page qui n'utilise que classefille.php, les fichiers inutiles fille2 et mere2 ne seront pas chargés (gain de temps).
    Mais si une page appele fille et fille2, commun.php sera inclu deux fois, d'où l'obligation d'utiliser le include_once, qui ne le reincluera pas.

  5. #105
    Membre régulier Avatar de zamanika
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 106
    Points : 102
    Points
    102
    Par défaut
    salut,

    J'ai appris pleins de choses à la lecture de ce topic !!! Grand merci à ceuzes qui y contribuent

    Du coup, j'ai une question... qu'est-ce qui est plus rapide - et la différence est-elle sensible ?

    3 variables différentes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $var1=1;
    $var2=2;
    $var3=3;
    ou

    1 variables tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $var[1]=1;
    $var[2]=2;
    $var[3]=3;

  6. #106
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2002
    Messages : 299
    Points : 373
    Points
    373
    Par défaut
    Qu'est ce qui te pousse à nous faire aveuglement confiance, alors que tu peux facilement tester?

  7. #107
    Membre régulier Avatar de zamanika
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 106
    Points : 102
    Points
    102
    Par défaut
    euh... ben comment ???

  8. #108
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2002
    Messages : 299
    Points : 373
    Points
    373
    Par défaut
    Classiquement
    - note l'heure
    - execute 1000 fois le script
    - calcule heure-heure notée

    Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function getmicrotime()
            {
            list($usec, $sec) = explode(" ", microtime());
            return ((float)$usec + (float)$sec);
            }
     
    $time = getmicrotime();
    for&#40;$ct=0; $ct<1000; $ct++&#41; mafunctionatester&#40;&#41;;
    echo getmicrotime&#40;&#41;-$time;
    Tu as ainsi le nombre (non entier) de secondes entre le début et la fin.
    Tu fais ça pour les deux versions (pour un script très simple, passe à 10000) et tu compare. Retente plusieurs fois, évite d'encoder un divx en même temps, histoire que le multitache ne brouille pas tout.

    vlavlavla
    Cédric

  9. #109
    Membre régulier Avatar de zamanika
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 106
    Points : 102
    Points
    102
    Par défaut
    J'ignorai l'existence de cette fonction ( ).

    Je croyais que les benchs de ce topic étaient faits par des logiciels spéciaux (quoique, en y reflechissant bien, avec le bench en ligne de iubito, j'aurai du me douter qu'il y avait du php derrière tout ça)

    En tout cas, voilà une fonction qui va m'enlever bien des doutes !!!!
    J'essaye demain et vous dis pour les $var et $var[] !

    Merci

  10. #110
    Membre régulier Avatar de zamanika
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 106
    Points : 102
    Points
    102
    Par défaut
    alors je viens de tester, mais comme c'est la première fois que je fais se genre de chose, j'aimerai savoir si j'ai procédé correctement :

    J'ai repris le script ci-dessus et j'ai fais :

    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
    <?php
    function getmicrotime&#40;&#41;
            &#123;
            list&#40;$usec, $sec&#41; = explode&#40;" ", microtime&#40;&#41;&#41;;
            return &#40;&#40;float&#41;$usec + &#40;float&#41;$sec&#41;;
            &#125;
     
    $time = getmicrotime&#40;&#41;;
    for&#40;$ct=0; $ct<100000; $ct++&#41; &#123;
    $var0=5;
    $var1=5;
    $var2=5;
    $var3=5;
    $var4=5;
    &#125;
    echo getmicrotime&#40;&#41;-$time;
    ?>
    resultat sur plusieurs essaies : entre 0.29 et 0.33

    puis

    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
    <?php
    function getmicrotime&#40;&#41;
            &#123;
            list&#40;$usec, $sec&#41; = explode&#40;" ", microtime&#40;&#41;&#41;;
            return &#40;&#40;float&#41;$usec + &#40;float&#41;$sec&#41;;
            &#125;
     
    $time = getmicrotime&#40;&#41;;
    for&#40;$ct=0; $ct<100000; $ct++&#41; &#123;
     
    $var&#91;0&#93;=5;
    $var&#91;1&#93;=5;
    $var&#91;2&#93;=5;
    $var&#91;3&#93;=5;
    $var&#91;4&#93;=5;
     
    &#125;
    echo getmicrotime&#40;&#41;-$time;
    ?>
    resultat sur plusieurs essaies : entre 0.34 et 0.36

    SI j'ai tout compris, le résultat c'est que c'est plus rapide de stocker des valeurs dans des variables que dans des tableaux. J'ai juste, ou je suis complétement à coté de la plaque ???

  11. #111
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2002
    Messages : 299
    Points : 373
    Points
    373
    Par défaut
    Tout bon!
    Toutefois, si un tableau te permet de gérer plus simplement les données, je pense qu'il ne faut pas hésiter à l'utiliser. Les gros gains se font sur les algorithmes plus que sur les astuces.
    En plus pour un logiciel serveur (comme un site web) il faut prendre en compte l'utilisation mémoire, mais je n'y ai pas encore touché et je te laisse ça en exercice ;-)
    Bonne nuit

  12. #112
    Membre éclairé
    Avatar de iubito
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2003
    Messages : 389
    Points : 655
    Points
    655
    Par défaut
    un tableau va prendre légèrement plus de mémoire, mais si tu as besoin d'un tableau, utilise un tableau.

    Maintenant si tu veux juste 3 variables temporaires $tmp1, $tmp2, $tmp3 n'utilise pas un tableau.

    Par contre si tu veux une liste que tu peux trier, rechercher... bein c'est les tableaux qui s'imposent
    Membre éclairé, lol !

  13. #113
    Membre régulier Avatar de zamanika
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 106
    Points : 102
    Points
    102
    Par défaut
    Merci pour vos lumières !

  14. #114
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 66
    Points : 85
    Points
    85
    Par défaut
    Salut,

    à votre avis il vaut mieux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if&#40;isset&#40;$tab&#91;$indice&#93;&#41;&#41; ...
    ou bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if&#40;array_key_exists&#40;$indice, $tab&#41;&#41; ...
    :

  15. #115
    Inscrit
    Avatar de Caerbannog
    Inscrit en
    Novembre 2004
    Messages
    206
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 206
    Points : 273
    Points
    273
    Par défaut
    J'en sais rien...

    Mais j'ai une question : comment on est censé présenter le code (que faite vous, vous ?) ?

    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
    <?
    function maFonction&#40;&#41; &#123;
         instructions
    &#125;
    ou
    function maFonction&#40;&#41;
    &#123;
         instructions
    &#125;
    ou
    function maFonction&#40;&#41;
         &#123;
         instructions
         &#125;
     
    ou autre chose ?
    pareil pour les if, switch, etc...

  16. #116
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Salut !

    à ce niveau, c'est de la présentation, chacun fait comme il veut, pour ma part, c'est la première ou seconde façon, mais si dans le cas d'un if par exemple, l'expression est trop complexe, il arrive aussi que je la décompose en plusieurs lignes...

    Je ne pense pas que ça ais d'incidence notable au niveau des performances.
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  17. #117
    Inscrit
    Avatar de Caerbannog
    Inscrit en
    Novembre 2004
    Messages
    206
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 206
    Points : 273
    Points
    273
    Par défaut
    Ouais ça change rien por les performances (ce sont des "Caractères blancs", comme les sauts de ligne ), mais c'était pour savoir ce que vous trouvez "joli"... Moi c'est la 2 (je trouve la 1 "désaxée" ).

  18. #118
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2002
    Messages : 299
    Points : 373
    Points
    373
    Par défaut
    et moi la 3, mais bon les gouts et les couleurs...

  19. #119
    Membre éclairé
    Avatar de iubito
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2003
    Messages : 389
    Points : 655
    Points
    655
    Par défaut
    moi c'est la 2. De toute façon aucune incidence.
    Membre éclairé, lol !

  20. #120
    Membre éclairé
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 764
    Points
    764
    Par défaut
    ça, ça m'a toujours posé problème j'ai pris l'habitude d'indenté "à ma sauce", et j'avoue avoir du mal à en démordre...

    ça donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    function maFonction&#40;&#41; &#123;
         instructions
        &#125;
    C'est à dire un mélange de la (1) et la (3).
    Google is watching you !

Discussions similaires

  1. [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, 13h37
  2. [MySQL] [SGBD] Script PHP/MYSQL d'access FTP
    Par ChRom dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 09/01/2006, 02h52
  3. Réponses: 9
    Dernier message: 05/01/2006, 13h24
  4. Recherche Login Script PHP & MySQL
    Par whbh dans le forum SQL Procédural
    Réponses: 9
    Dernier message: 01/12/2005, 17h45
  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, 09h33

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