Vos meilleurs astuces....

Vos meilleurs astuces.... - PHP - Programmation

Marsh Posté le 28-05-2004 à 14:14:54    

bon je propose de mettre ici ttes les astuces pour alléger le code ou le rendre plus rapide.
Histoire que les codes bien gore soit allégé :D
 
topics à lire :  
 
Fonction toute bete mais sacrément utile
 
zen pensez quoi de mon idée ? :p


Message édité par Ex-Floodeur le 29-05-2004 à 10:11:01

---------------
Saint Seiya  || La Livebox || Europe, débats, réflexions
Reply

Marsh Posté le 28-05-2004 à 14:14:54   

Reply

Marsh Posté le 28-05-2004 à 16:24:11    

Elle est plutot sympathique ton idée !
Un truc que j'utilise tout le temps pour mes sites, c'est la technique des pseudo frames dont le principe est simple:
- une seule page de mise en forme pour toutes les autres
- un include au sein de cette page qui depend d'un parametre de l'url
 
Avantages:
- Mise en forme du site simple puisqu'il ne suffit d'editer qu'une seule page
- Bien d'autres si toutes les pages du site sont referencés dans une base de données et que le menu est genere dynqmiquement


---------------
"Un voyage de plusieurs milliers de kilometres commence par un simple pas"
Reply

Marsh Posté le 28-05-2004 à 16:57:20    


 
Moi ca m'enerve de devoir recharger inutilement tout un pseudo-cadre avec 50 images + script et tout le bordel pour ne changer que le contenu.  
Envisageable si c'est pas trop lourd...
 
Je reviendrai pour des astuces, si j'en trouve :p


---------------
Posté depuis des chiottes, sales. Me gusta.
Reply

Marsh Posté le 28-05-2004 à 17:10:22    

Quand je dois gérer des couleurs alternées par ligne:
 

Code :
  1. if ($i & 1) {
  2. //couleur1
  3. }
  4. else {
  5. //couleur2
  6. }
  7. $i++;


Bien sur dans une boucle...


Message édité par kfman le 28-05-2004 à 17:10:49

---------------
"Nous allons reformater les français" © Nicolas Sarkozy
Reply

Marsh Posté le 28-05-2004 à 17:10:34    

c un peu pareil.. je suis passé d'une page avec frame aux pseudo-frames et je ne suis que moyennement satisfait des temps de réponse...
en plus c pas évident quand tu dois gérer des choses avant que le header soit envoyé par exemple : j'ai même pas réussi... ex : je gère mon menu de login dans une pseudo-frame... mais je voudrais rajouter la gestion des cookies... et là je peux pas mettre de cookie à cet endroit puisque je suis déjà à la moitié de la page qui est affichée... :((
comment faire ça joliment ?

Reply

Marsh Posté le 28-05-2004 à 17:19:30    

c'esst un topic visant à regrouper des astuces..Pour les questions, créez un topic...


---------------
Saint Seiya  || La Livebox || Europe, débats, réflexions
Reply

Marsh Posté le 28-05-2004 à 18:52:47    

moi là ou j'ai fais de réel economie en perf, c'est lors que j'afficher les 20 réponses sur mon forum.
J'avais un include qui contenait plein de str_replace("";"";"" ); plusieurs dizaine de ligne qui me permetter de transformer les BBcode et smileys.
G virer cette include et copier coller mes str_replace.
Certe la page est plus lourde, mais j'économise de 20 include et g gagner 50% de temps en moins !
 
Donc il faut éviter les petit include dans une boucle


---------------
Créer son forum gratuit |  Mon beau blog phpBB caÿ le mal :o
Reply

Marsh Posté le 28-05-2004 à 19:10:03    

[:drapo]

Reply

Marsh Posté le 28-05-2004 à 19:37:42    

kfman a écrit :

Quand je dois gérer des couleurs alternées par ligne:
 

Code :
  1. if ($i & 1) {
  2. //couleur1
  3. }
  4. else {
  5. //couleur2
  6. }
  7. $i++;


Bien sur dans une boucle...


et si...
 

Code :
  1. if ($f) {
  2.   // couleur 1
  3. }
  4. else {
  5.   // couleur 2
  6. }
  7. $f = !$f;


 
ça serait pas un poil mieux? (plus logique en tout cas :o)


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 28-05-2004 à 19:44:19    

tsk tsk :non:  
 
plus propre
 

for ($i=0; $i<=10; $i++) {
 ($i%2==1)?$color="color1":$color="color2";
 echo $color."<br />";
}


 
output =>

Citation :

color2
color1
color2
color1
color2
color1
color2
color1
color2
color1
color2

Reply

Marsh Posté le 28-05-2004 à 19:44:19   

Reply

Marsh Posté le 28-05-2004 à 21:37:34    

moa g sa :
 

Code :
  1. // COULEUR alernative pour chaque message de réponse
  2. if($it==$color_1){
  3.   $it = $color_2;
  4. }
  5. else {
  6.   $it = $color_1;
  7. }


---------------
Créer son forum gratuit |  Mon beau blog phpBB caÿ le mal :o
Reply

Marsh Posté le 28-05-2004 à 21:49:44    

la vraie méthode c'est celle de chacal_one333

Reply

Marsh Posté le 28-05-2004 à 21:49:58    

:sol:
 
[edit] enfin disons qu'il n'y a pas de "vraie" methode a proprement parler :o


Message édité par Profil supprimé le 28-05-2004 à 21:50:30
Reply

Marsh Posté le 28-05-2004 à 22:34:06    

Le plus propre AMHA :
 

Code :
  1. for ($i = 0; $i < 10; $i++) {
  2.    $color = ($i % 2) ? "color1" : "color2";
  3.    // etc...
  4. }


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 28-05-2004 à 22:35:24    

j'aime pas le coup du modulo, parce qu'une division contre une simple incrémentation ou une inversion de bits, la partie est gagnée d'avance.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 28-05-2004 à 22:53:32    

moyenne d'exec sur un boucle de 10 puis encore 10 :/
mon truc merde, ou le modulo est vraiment plus rapide? :D
 

function getmicrotime()
{
   list($usec, $sec) = explode(" ", microtime());
   return ((float)$usec + (float)$sec);
}  
 
for ($u=0; $u<10; $u++) {
 $tim1=getmicrotime();
 
        test 1 puis test 2  
 
 $tim2=getmicrotime();
 $time+=$tim2-$tim1;
}
echo "moyenne de : ";
printf("%2.10f", $time/100);
echo " secondes";


 
test 1 :  

for ($i=0; $i<=10; $i++) {
  ($i%2==1)?$color="color1":$color="color2";
  //echo $color."<br />";
 }


=> moyenne de : 0.0000029897 secondes
 
test 2 !  

for ($i=0; $i<=10; $i++) {
  $color_1="1";
  $color_2="2";  
    if($it==$color_1){
        $it = $color_2;
    }
    else {
        $it = $color_1;
    }
 
                  //$it retourn bien 1 ou 2
 }


moyenne de : 0.0000055575 secondes
 
:o


Message édité par Profil supprimé le 28-05-2004 à 22:59:05
Reply

Marsh Posté le 28-05-2004 à 23:09:00    

y a ca aussi : http://forum.hardware.fr/forum2.ph [...] owntopic=0
 
a mettre dans les sujets a lire ;)


Message édité par veryfree le 28-05-2004 à 23:09:41
Reply

Marsh Posté le 28-05-2004 à 23:25:02    

titione a écrit :

c un peu pareil.. je suis passé d'une page avec frame aux pseudo-frames et je ne suis que moyennement satisfait des temps de réponse...
en plus c pas évident quand tu dois gérer des choses avant que le header soit envoyé par exemple : j'ai même pas réussi... ex : je gère mon menu de login dans une pseudo-frame... mais je voudrais rajouter la gestion des cookies... et là je peux pas mettre de cookie à cet endroit puisque je suis déjà à la moitié de la page qui est affichée... :((
comment faire ça joliment ?


 
Il y a un moyen denrengistrer toutes les sorties généré par PHP ds un buffer, et de les envoyé slmnt ensuite au navigateur, je ne sais plus exactement comment mais je peux retrouver sa si tu ne trouve pas sur php.net :p
 
Avantage :
Permet denvoyer des header et des cookies nimporte ou pour autant que l'on envoit le buffer après
 
Désavantage :
La page est envoyé dun bloc au navigateur, donc si elle est composé dynamiquement et que cette composition prends bcp de temps, lutilisateur verra une page entiérement blanche pendant la composition...

Reply

Marsh Posté le 28-05-2004 à 23:26:50    

c'est ob_start

Reply

Marsh Posté le 28-05-2004 à 23:28:23    

arrêter le PHP.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 28-05-2004 à 23:29:38    

nraynaud a écrit :

arrêter le PHP.

arrete de boire? :whistle:

Reply

Marsh Posté le 28-05-2004 à 23:30:28    

chacal_one333 a écrit :

arrete de boire? :whistle:


non, ça il le dirait aussi même à jeun :o
[/hs]


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 28-05-2004 à 23:49:14    

j'ai essayé 4 méthodes suivant ce qui était proposé ici. A ma grande surprise, c'est la première solution qui gagne à tous les coups. J'ai lancé 2x le test pour le fun:
 

Citation :

Test 1: use of integer: 0.12952208518982
Test 2: use of a boolean with classic if structure: 0.01571798324585
Test 3: use of a boolean with ternary operator: 0.014654874801636
Test 4: use of a integer and modulo with ternary operator: 0.013762950897217
 
Test 1: use of integer: 0.011729001998901
Test 2: use of a boolean with classic if structure: 0.014642000198364
Test 3: use of a boolean with ternary operator: 0.014315843582153
Test 4: use of a integer and modulo with ternary operator: 0.014485836029053


 
edit: donc c'est kfman qui gagne :D


Message édité par drasche le 28-05-2004 à 23:49:44

---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 28-05-2004 à 23:53:52    

le modulo c ce qu'on apprend a l'ecole en + :o

Reply

Marsh Posté le 28-05-2004 à 23:54:58    

bin vu que le modulo implique une division, je sentais qu'il serait pas gagnant :D
 
j'avais parié sur le booléen mais j'ai perdu :(
 
ah j'oubliais: il y avait 10000 itérations par test.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 28-05-2004 à 23:56:48    

en meme temps mon prof de c++ se droguait :o

Reply

Marsh Posté le 29-05-2004 à 00:14:24    

veryfree a écrit :

en meme temps mon prof de c++ se droguait :o

il avait une axcuse aussi.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 29-05-2004 à 00:18:43    

krtek a écrit :

Il y a un moyen denrengistrer toutes les sorties généré par PHP ds un buffer, et de les envoyé slmnt ensuite au navigateur, je ne sais plus exactement comment mais je peux retrouver sa si tu ne trouve pas sur php.net :p
 
Avantage :
Permet denvoyer des header et des cookies nimporte ou pour autant que l'on envoit le buffer après
 
Désavantage :
La page est envoyé dun bloc au navigateur, donc si elle est composé dynamiquement et que cette composition prends bcp de temps, lutilisateur verra une page entiérement blanche pendant la composition...


 

Code :
  1. ob_start();
  2. echo "ici j'écris des trucs";
  3. header("Location: mapage.php" ); // ici je fais ma redirection sans aucun souci puisque le flux est bufferisé
  4. ob_end_flush();


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 29-05-2004 à 00:19:29    

ben sur ce coup la il avait juste , c assez execeptionnel.
 
 
jme souviens encore de certaines scene:
 
Mr ca compile pas
tu as sauvegardé le fichier au moins? ( la il click 15 fois sur la disquette pour sauvé le doc)
ca compil toujours pas
 
et l a t a le prof perplexe:
bon on va faire une petite pause  
 
 
jl adorait :love:

Reply

Marsh Posté le 29-05-2004 à 00:44:30    

j'ai retrouvé ce lien:
 
http://www.estvideo.com/dew/pages/phpbench/
 
trés interessant a lire !


---------------
Découvre le HFRcoin ✈ - smilies
Reply

Marsh Posté le 29-05-2004 à 01:34:08    

bookmarked :)

Reply

Marsh Posté le 29-05-2004 à 10:14:39    

http://www.estvideo.com/dew/pages/phpbench/bench5b.png
 
y a pas besoin des { dans un if ? :heink:


---------------
Saint Seiya  || La Livebox || Europe, débats, réflexions
Reply

Marsh Posté le 29-05-2004 à 10:22:37    

si ya qu'un travail de fait apres le if (ou else) pas besoin.
 
genre if ($a==1) { $toc="tic"; $toc2="tic2"}
 
si par contre tu retire le $toc2, tu peu degager les accolade

Reply

Marsh Posté le 29-05-2004 à 10:31:27    

un lien pour faire du benchmark de script : http://pear.php.net/package/Benchmark


---------------
Saint Seiya  || La Livebox || Europe, débats, réflexions
Reply

Marsh Posté le 29-05-2004 à 12:46:56    

drasche a écrit :

j'aime pas le coup du modulo, parce qu'une division contre une simple incrémentation ou une inversion de bits, la partie est gagnée d'avance.


Il ne doit pas exister beaucoup d'opérations plus rapides qu'un modulo 2 aussi :o
 
Edit: penser à relire tout le post :/


Message édité par belgique le 29-05-2004 à 12:48:28
Reply

Marsh Posté le 29-05-2004 à 16:19:28    

belgique a écrit :

Il ne doit pas exister beaucoup d'opérations plus rapides qu'un modulo 2 aussi :o

xor ?


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 29-05-2004 à 16:30:46    

drasche a écrit :


edit: donc c'est kfman qui gagne :D


 
http://www.touslessmileys.com/smileys/Dawa/dawa_014.gif


---------------
"Nous allons reformater les français" © Nicolas Sarkozy
Reply

Marsh Posté le 31-05-2004 à 01:24:52    

chacal_one333 a écrit :


for ($i=0; $i<=10; $i++) {
 ($i%2==1)?$color="color1":$color="color2";
 echo $color."<br />";
}
 


 
 [:everything4free]  
 

$color=$color=='red'?'blue':'red';


 
 :o


Message édité par Mr yvele le 31-05-2004 à 01:25:48

---------------
yvele n'est plus.
Reply

Marsh Posté le 31-05-2004 à 02:14:06    

[:kiki]

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed