Développer et déployer une application php maintenable

  • 2,318 views
Uploaded on

PHP Tour Lille 2011

PHP Tour Lille 2011

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
2,318
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
24
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • Voir comment phpparse ses includes

Transcript

  • 1. Lucas Bonnet Pierre Couzy
  • 2. ◦ Dans le temps◦ Dans l’environnement d’exécution◦ Dans les évolutions
  • 3.  Les prérequis ? ◦ Le runtime PHP ◦ Les extensions ◦ Logging L’appli ? ◦ Paramétrage ◦ La base de données ◦ Les autres données La prod ? ◦ Le serveur ◦ Les caches ◦ Retour sur la base de données Le déploiement
  • 4. Un premier impact sur les versions majeures  Fonctions obsolètes  Vieux workarounds qui cessent de fonctionner  Nouveaux bugsMais aussi sur les versions mineures  Corrections apportées suite à l’analyse par CoVerity  Gestion d’erreur parfois subtilement différente  Exemples : Eval, PDOEt enfin selon l’OS  Profil de perf TRES différent entre 5.2 et 5.3 sous WindowsLe choix du runtime va avoir de très grosses conséquences  Soit on fige une version de PHP en prod  Soit on sait recetter l’appli sur une nouvelle version de …
  • 5.  Installez php sans extensions Activez le reporting Ajoutez le strict minimum Mettez php.ini au carré Ne jetez pas les extensions qui ne vous servent pas ? ◦ On est pas d’accord sur le sujet.
  • 6.  Calendar : installé ou pas ? Mb_string : en mod_php sur 5.2 en mutu, si des sites activent mb_string les autres en “profitent” Au fait, quand on ajoute une extension à une install existante, on prend quelle version ? Un cauchemar particulier sous Windows ◦ Prenez les versions VC9 NTS pour IIS, et VC6 TS pour Apache
  • 7.  À faire sur la bécane de dev et après chaque mise en prod et à garder dans les docs
  • 8.  Les composants tiers (FW, plugins, etc.) Les paramètres de déploiement Les paramètres de fonctionnement L’adhérence à la base de données Le filesystem Etc.
  • 9.  Des paramètres regroupés Différenciés par environnement de déploiement Différenciés par nature ◦ appli/infra/opti/… Préférez des formats texte… ◦ Et documentés
  • 10.  Le minimum syndical ◦ Une couche technique d’abstraction ◦ Un référentiel pour les requêtes custom PDO ◦ Pas complet, mais on a pas mieux. Une parenthèse sur les ORM
  • 11.  A votre avis ? ◦ Images uploadées ◦ Sessions ◦ Fichiers auto-générés ◦ Logs ◦ Code uploadé par un admin (depuis l’IHM Web)
  • 12.  Quelques questions simples ◦ Conventions ? ◦ Permissions ? ◦ Abstraction ? (wrappers etc) ◦ Limites à comprendre  Nb de fichiers/folders par …  Limites sur un nom de fichier ?  Permissions sur répertoires : pas toujours dispo
  • 13.  Fichiers auto-générés Vignettes Sessions Paramétrage des logs ◦ Log errors = on ◦ display_errors = off  E_STRICT  E_ALL  E_DEPRECATED  E_NOTICE
  • 14.  Les 5 principales causes couvrent 86% des attaques recensées Comment se couvrir ? Coverity Php lint
  • 15.  Séparez les données ◦ UGC ◦ Données de structure / modules / etc Exemple : Drupal, un nouveau module ◦ Le filesystem ◦ La base de données ◦ Même sans contenus utilisateur ◦ l’upgrade est faite par code
  • 16.  C’est quoi l’adresse de ton SMTP ? ◦ Si c’est pour quelques mails l’hébergeur peut éventuellement le fournir ◦ Si c’est pour spammer on passe par un service dédié et externe (critsend, etc.) Tu peux m’ouvrir un accès FTP ? ◦ Pour de la mise en prod ? ◦ Pour de la mise à dispo d’exports divers et variés ◦ Pour du reparamétrage
  • 17.  Profils de charge inattendus ◦ Un appel synchrone à FB oublié dans un coin sur la home La base s’éloigne ◦ Lag qui passe de 1 à 10 ms Saturations disque / RAM / réseau Oui, j’ai laissé l’historique dans la base, pourquoi tu demandes ça ?
  • 18. Un process par Chargement de Gestion d’un pool FastCGI ISAPI & mod-phpCGI requête PHP in-process de process (surrogate IIS ou process Apache) Avantage Avantage Avantages • Très stable • Très performant • Plus rapide que CGI • Plus stable Inconvénient Inconvénients qu’ISAPI/mod_php • Permet de • *Très* lent sous • Stabilité fonctionner sans Windows (coût • Réentrance réentrance énorme de création d’un process)
  • 19. http://forge.bearstech.com/trac/wiki/DebianLampLenny
  • 20.  Optimiser, c’est mal ◦ En dev  Avant la mise en prod  Par copier/coller de trucs sur internet
  • 21.  Sur la bécane ◦ Cache d’opcode ◦ Cache de résolution dns/filesystem ◦ User code ? ◦ Caches de rendu divers et variés ◦ Cache de bdd Entre bécanes ◦ Sessions dans memcache/redis/.. Au cul des bécanes ◦ Varnish (cookie de session anyone ?)
  • 22.  Tables à croissance infinie Requêtes non cachées Requêtes impliquant un table scan Select * from MyHugeNewsTable … Order by rand() Fonctionnellement, une jointure est équivalente à une boucle. Les BDD savent optimiser les requêtes identiques (par exemple les requêtes paramétrées) ◦ Il y toujours PDO::ATTR_EMULATE_PREPARES si vous en avez besoin
  • 23.  Mon premier déploiement ◦ Coupez le réseau de la machine du développeur et filez-lui une clé USB. Pour les suivants, automatisez ◦ Aujourd’hui ce n’est pas la norme … Et on est polis Un contrôleur de source ça peut garder plein de trucs ◦ Y compris une appli qui n’est pas sous contrôle de source avant l’arrivée en prod