[apprendre] Php

Statut
N'est pas ouverte pour d'autres réponses.

ozilrit

Elite
Quelques remarques :
  • Apprends l'orienté objet.
  • Apprends l'MVC.
  • Documente.
    Tu peux observer tout cela dans le ZF.​
  • Évite d'utiliser directement ta base de donnée pour journaliser.
    Expédie plutôt l'info. dans le cache et relève-traite-stocke les données toutes les n périodes.​
  • Évite les double-guillemets pour délimiter une chaîne.
  • Évite de te connecter/déconnecter de la bdd à chaque requête ! =]
  • Intéresse toi à l'extension gettext, équivalent de ton "lang".

Bon apprentissage ! ;)
N'hésite pas à poser tes questions ici.
 
1er
OP
WaKaaN

WaKaaN

JcQL
  • Évite d'utiliser directement ta base de donnée pour journaliser.
    Expédie plutôt l'info. dans le cache et relève-traite-stocke les données toutes les n périodes.​
  • Évite les double-guillemets pour délimiter une chaîne.
  • Évite de te connecter/déconnecter de la bdd à chaque requête ! =]
Pourrais-tu préciser ces 3 points? Thx ;
 

ozilrit

Elite
De mémoire :
  • Ta méthode setLog (...) insert une ligne dans la bdd, à chaque log ! Tu fais donc, en moyenne, 4 inserts par page uniquement pour garder une trace de ce qu'a fait l'utilisateur.
    Tu devrais plutôt réfléchir à une manière asynchrone de journalisation. Par exemple : envoyer tes logs dans le cache puis, toutes les 15 minutes, relever le cache, stocker les logs durablement (p.e.: dans la bdd) et vider le cache.

  • J'ai repéré des "Hello, " . $world . " !". C'est dommage d'utiliser les doubles guillemets alors que tu fais déjà l'effort de concaténer.

  • À chaque requête : tu inclus dbconnect avant - dbclose après. Tu te connectes, tu exécutes, tu te déconnectes. Tu te connectes, tu exécutes, tu te déconnectes. Tu te connectes, tu exécutes, tu te déconnectes. Tu te connectes, tu exécutes, tu te déconnectes.

    Hormis le fait que tu inclus plusieurs fois le même fichier et que ceci devrait être une classe, tu peux bien sûr conserver la même connection pour exécuter toutes tes requêtes.

    Parcontre, fermer la connection après toutes les requêtes - et avant de débuter les traitements ou l'affichage - est une bonne pratique. =]
 
1er
OP
WaKaaN

WaKaaN

JcQL

  • Parcontre, fermer la connection après toutes les requêtes - et avant de débuter les traitements ou l'affichage - est une bonne pratique. =]
Donc en gros ca revient au meme non ?

genre :

close() - connect() - exec() -------------------- close() - connect() - exec() ?

Ou j'ai rien compris ?
 

ozilrit

Elite
Tu fais :
connect () - exec () - close () - traitement - connect () - exec () - close () - traitement - connect () - exec () - close () - traitement - connect () - exec () - close () - traitement - connect () - exec () - close () - traitement - affichage​

Il faudrait :
connect () - exec () - exec () - exec () - exec () - exec () - close () - traitement - affichage​
 
1er
OP
WaKaaN

WaKaaN

JcQL
Ah okay :) J'ai compris :)

Maintenant je vais essayer d'apprendre le zend framework... Voir comment ils fonctionnent, voir ce dont ils sont capables... J'en ai vu dautre aussi, j'irais jeter un coup d'oeil dans tout ca... Je reviendrais surement d'ici un mois une fois que j'aurais tout assimiler et changer de technique :)

En tout cas, un grand merci ! J'ai appris pas mal de chose ;)

Encore juste une chose...

Lorsque tu me dis de d'abord mettre tout en cache... Comment faire? Je n'ai absolumeent aucune idée du fonctionnement...
 

ozilrit

Elite
Avec un rdbms, le plus lourd n'est généralement pas la requête mais bien le handshaking (connect()).

Il est donc conseillé, avec Apache, d'utiliser une connection persistante (pconnect()).
 

ozilrit

Elite
Il existe beaucoup de moyens pour cacher un objet : script, fichier, mémoire, ...

Je te propose d'étudier l'extension APC :
  • cache d'OPCode :
    il stocke l'intérprétation du Zend Engine afin d'éviter de réinterpréter le script à chaque requête.​
  • cache classique en mémoire et non-distribué :
    il te permet de stocker un objet, un tableau, une chaine, ... afin d'éviter de réitérer les traitements lourds à chaque requête.​

APC est soutenu par quelques core-dev et fut récemment remis au gout du jour par un développeur de Facebook. Son utilisation est très simple. Il devrait être inclu dans PHP6 et dernier détail : c'est une des propositions de PHP pour le GSoC.


De rien, bon amusement. =]
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut