|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||
|
Invité régulier
![]() |
Salut ! J'ai été confronté avec un site qui était hebergé sur un serveur dédier à la lenteur d'execution des page en Php.
En étudiant les documentation Php MySQL nous avons réussit a accelerer considerablement la vietesse et augmenter le nombre d'internaute sconnectés en même temps sur le site. Donc voila, je vous propose que l'on se disent des techniques pour accelerer Php. Je commence : 8) - Simplifier au maximum les boucle while(...). - Utiliser le moin de variables possible, en effet tout les variables son stocké dans la ram (nan ?). - Réduire au maximum le nombre d'acces à une base de donnée (c'est important ça) Par exemple lorsque que vous avez une adition à faire : Code :
A vous maintenant de donner vos astuces, ou de poser des questions. |
||
|
|
00
|
|
|
#2 |
![]() ![]() ![]() Inscription : septembre 2002 Messages : 1 580 ![]() |
Je rajoute ceci:
- évitez les "select *" lorsque vous ne devez ramener qu'une ou deux colonnes de la table. - Mettez des index sur les colonnes qui sont souvet dans les clauses "where", bon, faut pas non plus mettre des index à tout va car pour chaque insertion, l'index doit être mis à jour, d'où perte de performance. Il faut uniquement mettre des index sur des grosses tables et qui sont requêtées à 85% VS mise à jour. - évitez les variables intermédiaires inutiles |
|
|
00
|
|
|
#3 |
|
Membre éprouvé
![]() ![]() Inscription : mars 2002 Messages : 189 ![]() |
Eviter toute opération unitile du type operation en 2 temps
$c = $a + $b; $e = $c + d; est plus lent que $e = $a + $b + $d; D'une maniere générale, les optimisation possible pour une base de données sont ici : http://sqlpro.developpez.com/OptimSQL/SQL_optim.html Ouvir 1 seule connection à la base de donnée et la fermée à la fin de la page, preferer le connect au pconnect Utiliser des constantes plutot que des variables qui ne change pas (ex les login, mot de passe, host et nom de la base de données Preferer la syntaxe simple pour les chaines de caratere (guillemets simples) qui ne sont pas analysées par l'interpreteur PHP contrairement a la syntaxe complexe (guillemets double ou syntaxe here doc) Il y a aussi possibilité de mettre en cache les scripts PHP (ex php accelerator) Il faut aussi penser a bien configurer le serveur que ce soit au niveau du materiel, du systeme d'exploitation ou du serveur http |
|
|
00
|
|
|
#4 |
|
Membre confirmé
![]() Développeur informatique Inscription : février 2003 Messages : 143 ![]() |
Apprendre à faire des commandes SQL bien compliquées pour sortir un seul recordset avec toutes les infos necessaires (mais pas d'inutile), pour reduire d'autant les acces à la base.
Recement j'ai refais une page ou je fais 1 acces à la base qui me renvoie tte les infos dont j'ai besoin, contre 3 par entrée dans la version d'avant, un premier et 2 autres par passage dans la boucle du premier (le gars avait l'air de s'etre arreté à 'select * from table' en sql). |
|
|
00
|
|
|
#5 |
|
Invité régulier
![]() |
Ouai c'est bien vrais tout ça
J'ai une ptite question, comment on fait pour rajouter une variable dans un champ d'une base ? pour les aditions on peut faire champ=champ+$nb Mais pour du texte par exemple on peut le faire ? genre (marche pas): champ=champ.'text a rentrer' Nan ? |
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : décembre 2003 Messages : 2 ![]() |
Bonjour,
Puisqu'on parle d'optimisation des scripts PHP, voilà une question que je me suis toujours posé. Lorsqu'on veut écrire du texte statique (typiquement les balises <table> ou <div>), est ce qu'il vaut mieux utiliser la commande ECHO ou arreter le script php ? Pour une question de lisibilité du code, il m'arrive souvent d'utiliser des ECHO, afin de ne pas interrompre mon script (?> ... <?php) pour seulement une ou deux lignes ; mais je ne suis pas certain que ca soit bon pour les performances ? Quelqu'un à un avis ? Vincent |
|
|
00
|
|
|
#7 |
|
En attente de confirmation mail
|
Si tu utilise des echo avec un texte statique privilege le '' plutot que ""
De plus si la mémoire occupetrop pensez à faire des unset(); qui libere la mémoire utilisé mais niveau performance je sais pas si c'est ça mais si le serveur est compilé avec l'option --memory-limit alors cette fonction peut-etre utile |
|
|
00
|
|
|
#8 |
|
Invité régulier
![]() Inscription : juin 2002 Messages : 12 ![]() |
Utilier les décalages à droite ou à gauche sur les bits ( << et >> ) pour diviser ou multiplier par deux .
|
|
|
00
|
|
|
#9 | ||||
|
Invité régulier
![]() Inscription : juin 2002 Messages : 12 ![]() |
Il arrive fréquement que l'on affiche un form qui liste toutes les entrées d'une table SQL et que l'on y associe une checkbox pour supprimer l'entrée si c'est coché
( je prend le cas le plus simple mais bien sur il peut y avoir plusieurs checkbox, ou alors un champ qui permet de modifier la valeur de l'entrée, etc .. .) Si l'on nomme check_id chaque checkbox, avec id verifiant l'id de l'entrée dans la table . Dans la page qui reçoit le formulaire, on peut faire ceci Code :
Mieux vaut faire Code :
|
||||
|
|
00
|
|
|
#10 |
|
Invité régulier
![]() |
Ouaw génial, je connaisait pas le IN () !!! c trop bien ça !!
sinan ca sert a koi ca ? Code :
query = substr($query, 0, strlen($query) - 2) . ")"; Sinan pour les echo ou le stopage du script php (?>) je pense qu'il faut utiliser ?> dés que on a un peut de texte a afficher sans trop de variable . remarque on peut afficher les variables comme ceci : <?=$var?> lorsque le script php est coupé. Sinan j'ai une aure question : faut t'il faire unset($var); des que l'on ne sert plus d'une variable par la suite. le fait d'executer la fonction unset() ne bouffe pas un peut de ressources ? faut voir si pour des variable ou on a mis casiment que dale dedan, c'est la peine de faire un unset() ... Encore une chose ; je pense qu'il vaut mieu utiliser des nombres plustot que des chaines de caractère dans des variable exemple : Code php :
$_POST['check_'.$i] == 1 au lieu de $_POST['check_'.$i] == on |
|
|
00
|
|
|
#11 | ||
|
Invité régulier
![]() Inscription : juin 2002 Messages : 12 ![]() |
La syntaxe officielle c'est "on" pour une checkbox cochée, je t'assure, fait un print_r($_POST); pour t'en assurer .
Sinon le substr() sur la $query, c'est pour retirer le ", " en trop bien sur. Et pour afficher beaucoup de texte qui ne comporte pas de variables la meilleur solution c'est la syntaxe "here doc" Code :
|
||
|
|
00
|
|
|
#12 | |
|
Membre régulier
![]() Matthieu Consultant informatique Inscription : janvier 2003 Messages : 134 ![]() |
Citation:
- j'ai aussi pu constater que pour des requetes compliquées le fait de liberer le resultset accelerait considerablement le script , la toujours avec unset
__________________
blog : http:blog.kyp.fr |
|
|
|
00
|
|
|
#13 |
|
Membre expérimenté
![]() ![]() Sylvain MachefertDéveloppeur Java Inscription : janvier 2003 Messages : 380 ![]() |
pour le <?=$var?> dit plus haut.
ça marche bien, mais la syntaxe <? ?> n'est pas valable sur tous les serveurs. Donc si le script doit être distribué( projet sourceforge ou autre) il vaut mieux mettre <?php echo $var; ?> c'est + long mais ça marche partout
__________________
Lé SMS cé kom lé ognon, sa pike lé yeu |
|
00
|
|
|
#14 | |||
|
Membre à l'essai
![]() Inscription : septembre 2003 Messages : 27 ![]() |
salut,
ici un tutorial en anglais sur les optimisations php assez complet qui pourrait peut etre, aprés accord de son auteur, être traduit et mis sur le site. je suis volontaire ++ |
|||
|
|
00
|
|
|
#15 | |
|
Membre expérimenté
![]() ![]() Sylvain MachefertDéveloppeur Java Inscription : janvier 2003 Messages : 380 ![]() |
Citation:
__________________
Lé SMS cé kom lé ognon, sa pike lé yeu |
|
|
00
|
|
|
#16 | ||
|
Membre expérimenté
![]() ![]() Sylvain MachefertDéveloppeur Java Inscription : janvier 2003 Messages : 380 ![]() |
Autre chose : bien lire la doc PHP
les fonctions highlight_string, show_source et highlight_file acceptent un paramètre supplémentaire optionnel, lorsqu'il vaut true le résultat est renvoyé, et non écrit directement. Par exemple : Code :
$contenu = show_source('fichier.php', TRUE); Code :
__________________
Lé SMS cé kom lé ognon, sa pike lé yeu |
||
|
00
|
|
|
#17 | |
|
Membre régulier
![]() Matthieu Consultant informatique Inscription : janvier 2003 Messages : 134 ![]() |
Citation:
j'ai toujours entendu dire que cela le relentissait, ce qui semblerait plus logique...
__________________
blog : http:blog.kyp.fr |
|
|
|
00
|
|
|
#18 | |
|
Membre à l'essai
![]() Inscription : septembre 2003 Messages : 27 ![]() |
Citation:
++ |
|
|
|
00
|
|
|
#19 |
|
Membre expérimenté
![]() ![]() Sylvain MachefertDéveloppeur Java Inscription : janvier 2003 Messages : 380 ![]() |
je vois toujours pas le rapport en un sizeof($arr) et un ob_start machin.
Le ob_xxx c'est pour récupérer ou compresser... bref faire des choses sur le texte qui est en temps normal envoyé directement au navigateur. Donc si dans ton for tu as beaucoup de echo trucs d'accord, mais je vois pas en quoi bufferizer la sortie autour d'un for accélèrerai.
__________________
Lé SMS cé kom lé ognon, sa pike lé yeu |
|
00
|
|
|
#20 | |
|
Membre à l'essai
![]() Inscription : septembre 2003 Messages : 27 ![]() |
Citation:
++ |
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com