optimisation du code

optimisation du code - PHP - Programmation

Marsh Posté le 13-09-2005 à 15:24:07    

voila je suis en train de faire un peu le menage dans mon code, j'ai une page de code qui doit faire 1250 lignes... pour s'y retrouver là dedans c'est un peu le bordel... alors j'ai decidé de faire des includes... mais j'aimerai savoir si ça risque de ralentir mon site... est ce que le traitement des scritps avec des includes seraient plutot conseillé plutot qu'une page avec 2000 lignes de codes d'affilée ?


---------------
Freed102
Reply

Marsh Posté le 13-09-2005 à 15:24:07   

Reply

Marsh Posté le 13-09-2005 à 15:36:03    

Je penses que deux trois fichiers inclus ralentiront moins ton serveur que 1000 lignes analysés pour rien.
Surtout que si le serveur est assez intélligent, il gardera les fichiers en mémoire.

Reply

Marsh Posté le 13-09-2005 à 15:42:55    

c bon a savoir alors... je vais faire comme ça ! deja pour moi ça m'aidera parceque retrouver un bout de code dans 1250 lignes je te raconte pas la migraine !


---------------
Freed102
Reply

Marsh Posté le 13-09-2005 à 15:58:25    

ou encore mieux fait ca avec des fonctions.. Bon pour la rapidité on repassera mais c'est plus lisible que des includes..


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 13-09-2005 à 15:59:29    

oui j'ai aussi fait des fonctions ! mais ya certaines instructions qui ne sont executées qu'une seule fois alors je fais pas des fonctions dans ces cas là sinon je m'en sors pas !
 
en général je cree des fonctions pour un truc bien spécifique.. comme l'upload d'une image ou un calcul bien precis, ou une creation d'un XML ou un truc comme ça...  
mais quand j'ai juste un champ à tester ou une variable à transformer ou un petit truc de rien du tout.. je fais pas une fonction... le probleme c'est que j'ai des tonnes de petits trucs de rien du tout ! lol!


Message édité par freed102 le 13-09-2005 à 16:02:43

---------------
Freed102
Reply

Marsh Posté le 13-09-2005 à 16:28:44    

Moi, même si je ne vérifie qu'une fois un formulaire donnée, à partir du moment où il y a un certain nombre de valeur à vérifier, je fais une fonction de vérification.
 
Je trouve moins dur de suivre des fonctions de ce genre que comprendre des séries de if sur plusieurs milliers de lignes. Quand au code en dehors des fonctions, je le limite au strict minimum avec jsute ce qu'il faut pour savoir dans quel cas je me trouve et appeller la fonction qui correspond. :)

Reply

Marsh Posté le 13-09-2005 à 16:36:45    

omega2 a écrit :

Moi, même si je ne vérifie qu'une fois un formulaire donnée, à partir du moment où il y a un certain nombre de valeur à vérifier, je fais une fonction de vérification.
 
Je trouve moins dur de suivre des fonctions de ce genre que comprendre des séries de if sur plusieurs milliers de lignes. Quand au code en dehors des fonctions, je le limite au strict minimum avec jsute ce qu'il faut pour savoir dans quel cas je me trouve et appeller la fonction qui correspond. :)


oui je comprends ce que tu veux dire.. mais parfois je peux pas creer des fonctions quand c trop complexe... par exemple avec cette creation de fichier XML... j'ai deja fait des fonctions pour simplifier mais je pense pas pouvoir simplifier d'avantage :
 

Code :
  1. $dom=& domxml_new_doc("1.0" );
  2. $firstchildName="document";
  3. $firstchild =& $dom->create_element($firstchildName);
  4. $firstchild->set_attribute("pagewidth",$_SESSION['pagewidth']);
  5. $firstchild->set_attribute("pageheight",$_SESSION['pageheight']);
  6. $firstchild->set_attribute("orientation",$_SESSION['pageorientation']);
  7. $firstchild->set_attribute("mode_couleur",$_SESSION['mode_couleur']);
  8. $firstchild->set_attribute("type",$_SESSION['type_modele']);
  9. $firstchild->set_attribute("famille",$_SESSION['famille_modele']);
  10. $dom->append_child($firstchild);
  11. CreateDOMFilledRectangle($dom,$firstchildName,"background",$_SESSION['pos_x_fond'],$_SESSION['pos_y_fond'],$_SESSION['width_fond'],$_SESSION['height_fond'],$_SESSION['couleur_fond'],$_SESSION['angle_fond']);
  12. CreateDOMTextEntity($dom,$firstchildName,"entite",$_SESSION['pos_x_nom'],$_SESSION['pos_y_nom'],$_SESSION['width_nom'],$_SESSION['height_nom'],$_SESSION['fonte_nom'],$_SESSION['couleur_nom'],$_SESSION['size_nom'],$_SESSION['align_nom'],"middle",$_SESSION['interlignage_nom'],$_SESSION['angle_nom'],$_SESSION['interlettrage_nom']);
  13. CreateDOMTextItem($dom,"entite","nom",$_SESSION['CVnom']);
  14. CreateDOMTextItem($dom,"entite","prenom",$_SESSION['CVprenom']);
  15. CreateDOMTextElement($dom,$firstchildName,"titre",$_SESSION['pos_x_titre'],$_SESSION['pos_y_titre'],$_SESSION['width_titre'],$_SESSION['height_titre'],$_SESSION['fonte_titre'],$_SESSION['couleur_titre'],$_SESSION['size_titre'],$_SESSION['align_titre'],"middle",$_SESSION['interlignage_titre'],$_SESSION['angle_titre'],$_SESSION['interlettrage_titre'],tagsForPDF($_SESSION['CVtitre']));
  16. CreateDOMTextEntity($dom,$firstchildName,"coordonnees",$_SESSION['pos_x_adresse'],$_SESSION['pos_y_adresse'],$_SESSION['width_adresse'],$_SESSION['height_adresse'],$_SESSION['fonte_adresse'],$_SESSION['couleur_adresse'],$_SESSION['size_adresse'],$_SESSION['align_adresse'],"middle",$_SESSION['interlignage_adresse'],$_SESSION['angle_adresse'],$_SESSION['interlettrage_adresse']);
  17. CreateDOMTextItem($dom,"coordonnees","adresse",tagsForPDF($_SESSION['CVadresse2']),$_SESSION['br_adresse']);
  18. //logo
  19. CreateDOMPictureElement($dom,$firstchildName,"logo1",$_SESSION['pos_x_logo'],$_SESSION['pos_y_logo'],$_SESSION['width_logo'],$_SESSION['height_logo'],$_SESSION['uploaddir'],$_SESSION['CVlogo_filename']);
  20. //echo $dom->dump_mem(true, 'UTF-8' );
  21. $_SESSION['xml_file']=$_SESSION['CVbase_filename'].".xml";
  22. $_SESSION['xml_path_file']=$_SESSION['client_folder'].$_SESSION['xml_file'];
  23. $xmlcontent=$dom->dump_mem(true, 'utf-8');
  24. if(file_exists($_SESSION['xml_path_file']))
  25. {
  26. unlink($_SESSION['xml_path_file']);
  27. }
  28. $handle=fopen($_SESSION['xml_path_file'],'x+');
  29. fwrite($handle,$xmlcontent,strlen($xmlcontent));
  30. fclose($handle);


---------------
Freed102
Reply

Marsh Posté le 13-09-2005 à 16:39:13    

Pourquoi est-ce que tu fait un fwrite à la fin, alors qu'un simple $dom->dump_file('pouet.xml'); suffirait ?

Reply

Marsh Posté le 13-09-2005 à 16:39:47    

moi non plus je vois pas comment tu pouras le simplifier d'avantage.
A moins que dom soit capable d'écrire le résultat directement dans le fichier auquel cas tu gagnes quelques lignes.
 
Edit : grilled [:anack] me semblait bien que c'était possible. ;)


Message édité par omega2 le 13-09-2005 à 16:41:28
Reply

Marsh Posté le 13-09-2005 à 16:41:40    

Justement, avec dump_file

Reply

Marsh Posté le 13-09-2005 à 16:41:40   

Reply

Marsh Posté le 13-09-2005 à 16:43:38    

et bien je crois que j'avais essayé plein de trucs par rapport au dump_file mais j'avais un probleme d'encodage de caracteres, avec dump_file je crois qu'on ne peut pas definir le type d'encodage.. alors qu'avec dump_mem on peut lui dire que c de l'utf-8


Message édité par freed102 le 13-09-2005 à 16:45:12

---------------
Freed102
Reply

Marsh Posté le 13-09-2005 à 16:46:33    

Ha oui tiens, ils ont pas prévus l'encodage pour écrire directement dans un fichier. :o

Reply

Marsh Posté le 13-09-2005 à 16:49:50    

Citation :


string DomDocument->dump_file ( string filename [, bool compressionmode [, bool format]] )
 
 
Creates an XML document from the dom representation. This function usually is called after building a new dom document from scratch as in the example below. The format specifies whether the output should be neatly formatted, or not. The first parameter specifies the name of the filename and the second parameter, whether it should be compressed or not.  
 


 

Citation :


string DomDocument->dump_mem ( [bool format [, string encoding]] )
 
 
Creates an XML document from the dom representation. This function usually is called after building a new dom document from scratch as in the example below. The format specifies whether the output should be neatly formatted, or not.  


 
vous voyez.. apparement avec dump_file on peut pas spécifier l'encodage !  :??:


Message édité par freed102 le 13-09-2005 à 16:50:45

---------------
Freed102
Reply

Marsh Posté le 13-09-2005 à 16:52:15    

L'encodage est en utf-8 alors... Mais comme sous PHP c'est en iso-8859-1, bonjour le bordel, faut tout convertir à la volée

Reply

Marsh Posté le 13-09-2005 à 16:54:04    

FlorentG a écrit :

L'encodage est en utf-8 alors... Mais comme sous PHP c'est en iso-8859-1, bonjour le bordel, faut tout convertir à la volée


c'est ce que j'ai fait... par exemple avec cette fonction là :
 

Code :
  1. function CreateDOMTextElement($DOMdocument,$parentNodeName,$newNodename,$pos_x=10,$pos_y=10,$width=75,$height=45,$fonte="arial.ttf",
  2. $couleur="FFFFFF",$size="10",$align="center",$valign="middle",$interlignage="auto",$angle=0,$interlettrage="auto",$text)
  3. {
  4. $parentNode=& $DOMdocument->get_elements_by_tagname($parentNodeName);
  5. $newNode=& $DOMdocument->create_element($newNodename);
  6. $newNode->set_attribute("type","textelement" );
  7. $newNode->set_attribute("pos_x",$pos_x);
  8. $newNode->set_attribute("pos_y",$pos_y);
  9. $newNode->set_attribute("width",$width);
  10. $newNode->set_attribute("height",$height);
  11. $newNode->set_attribute("fonte",$fonte);
  12. $newNode->set_attribute("couleur",$couleur);
  13. $newNode->set_attribute("size",$size);
  14. $newNode->set_attribute("align",$align);
  15. $newNode->set_attribute("valign",$valign);
  16. $newNode->set_attribute("interlignage",$interlignage);
  17. $newNode->set_content(utf8_encode($text));
  18. $parentNode[0]->append_child($newNode);
  19. }


 
et le pire c'est apres pour réinterpreter tout ça je suis obligé de faire des trucs du genre :
 
  $item['text'].=html_entity_decode(stripslashes(htmlentities($item[$nodename], ENT_COMPAT, 'UTF-8')))." ";


Message édité par freed102 le 13-09-2005 à 16:59:08

---------------
Freed102
Reply

Sujets relatifs:

Leave a Replay

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