Un petit quiz ?

Select * from MaTable order by   Select login from user where id=31
rand()
                                 Select password from user
                                                         where id=31

                                 If (password === pwd) select …




Machin = select toto from …      C’est corrigé ?
                                 Oui.
If ! cache(« machin »)           Testé ?
  Cache(« machin ») = Machin     Oui, la page fonctionne au poil
                                 Bon, on déploie !
blabla
Les outils




http://www.flickr.com/photos/fruhjk/5145895601/sizes/z/in/photostream/
Les outils
  Liés avec le système d'exploitation
    Linux, Mac, Windows

  Environnement embarqué (AMP)
    Wampserver, EasyPHP, Xampp, Mampp, WebMatrix

  IDE (Editeurs dits intelligents)
    Eclipse, NetBean, PHPstorm, Zend Studio
             (y a même VS.php pour Visual Studio)
Le runtime
La version de PHP
 L'OS
    Profil de performance différent entre les différentes
   versions PHP
     (5.2 et 5.3 pour windows)

 Impact sur les versions majeures
   Fonctions obsolètes
   Vieux workarounds qui cessent de fonctionner
   Nouveaux bugs

 Impact sur les versions mineures
   Corrections apportées suite à l'analyse par CoVerity
   Gestion d'erreurs parfois subtilement différente
   Exemples : Eval / PDO

 Choix du runtime va avoir de grosses conséquences
PHP 5.4
Comment s'y préparer ?
  Un overview des nouveautés et différences
    Serveur HTTP → php -S localhost:8000
    Les traits
    E_STRICT couvert par error_reporting (E_ALL)

  L'impact sur vos applications
     Evolutions des ARRAYs
     Economie de mémoire en désactivant
 des données venant de $_POST

  L'impact sur windows
Les extensions, c’est facile !
  Calendar : installé ou pas ?

  Mb_string : en mod_php sur 5.2 en mutualisé
  Si l’un active mb_string les autres en 'profitent'

  Si vous ajoutez une extension dans une install existante,
  vous prenez quelle version ?

  La fin du cauchemar sous Windows
      VC 9 NTS pour IIS
      VC 6 TS (Apache) : NON, stop, laissez tomber !
Extensions
 Installer PHP sans extensions
 Activer le reporting
 Ajouter le strict minimum
 Mettez php.ini au carré




        Ne pas jeter

         Les extensions inutiles
Gestion versions/extensions


Ça reste un problème délicat
Paramétrage
Le paramétrage




            © symfony
ORM ou pas ORM ?
 Les gros :
    Doctrine, Propel

 Les petits :
    Micro-ORM
    Kohana, Paris, ADODB

 Vous devez faire un choix :
   Plus c'est gros moins on le comprend
   Quand on choisit un composant, on le supporte (on
  maintient les versions, on suit les patches, etc.)

 Aucun ORM = plein de problèmes
NoSQL ?
 Pour
   Montée en charge séduisante
   Gestion de déploiement familière
 Contre
     Qui s’y frotte …
 Pour en savoir plus remontez dans le temps
 (session était à 13h00)
Les autres points
Production & perfs
Montée en charge
Code                               Réseau

Profils de charge inattendus       Temps de réponse plus long

→ Un appel synchrone à FB          → Lag qui passe de 1 à 10 ms
oublié sur la Home Page



Base de données                    Matériel

L'historique est dans la base de   Quelques mégas sur disque,
données

→ Pourquoi la question ?           → c'est raisonnable ?
Le déploiement
Il reste... le déploiement
          SMTP                   FTP / FTPs
  Quelques emails             Pour la mise en prod
  Votre hébergeur
                              Exports divers et variés
   Pour du SPAM
   Service dédié et externe   Reparamétrage
 (cristend,etc.)

  Outils
  SendGrid
  Sarbacane
  EMailing Automate (EMA)

  En PHP
  Emailing
  phpList
PHP : écrire et déployer des applications maintenables !
PHP : écrire et déployer des applications maintenables !

PHP : écrire et déployer des applications maintenables !

  • 3.
    Un petit quiz? Select * from MaTable order by Select login from user where id=31 rand() Select password from user where id=31 If (password === pwd) select … Machin = select toto from … C’est corrigé ? Oui. If ! cache(« machin ») Testé ? Cache(« machin ») = Machin Oui, la page fonctionne au poil Bon, on déploie ! blabla
  • 7.
  • 8.
    Les outils Liés avec le système d'exploitation Linux, Mac, Windows Environnement embarqué (AMP) Wampserver, EasyPHP, Xampp, Mampp, WebMatrix IDE (Editeurs dits intelligents) Eclipse, NetBean, PHPstorm, Zend Studio (y a même VS.php pour Visual Studio)
  • 9.
  • 11.
    La version dePHP L'OS Profil de performance différent entre les différentes versions PHP (5.2 et 5.3 pour windows) Impact sur les versions majeures Fonctions obsolètes Vieux workarounds qui cessent de fonctionner Nouveaux bugs Impact sur les versions mineures Corrections apportées suite à l'analyse par CoVerity Gestion d'erreurs parfois subtilement différente Exemples : Eval / PDO Choix du runtime va avoir de grosses conséquences
  • 12.
    PHP 5.4 Comment s'ypréparer ? Un overview des nouveautés et différences Serveur HTTP → php -S localhost:8000 Les traits E_STRICT couvert par error_reporting (E_ALL) L'impact sur vos applications Evolutions des ARRAYs Economie de mémoire en désactivant des données venant de $_POST L'impact sur windows
  • 14.
    Les extensions, c’estfacile ! Calendar : installé ou pas ? Mb_string : en mod_php sur 5.2 en mutualisé Si l’un active mb_string les autres en 'profitent' Si vous ajoutez une extension dans une install existante, vous prenez quelle version ? La fin du cauchemar sous Windows VC 9 NTS pour IIS VC 6 TS (Apache) : NON, stop, laissez tomber !
  • 15.
    Extensions Installer PHPsans extensions Activer le reporting Ajouter le strict minimum Mettez php.ini au carré Ne pas jeter Les extensions inutiles
  • 17.
  • 20.
  • 21.
    Le paramétrage © symfony
  • 26.
    ORM ou pasORM ? Les gros : Doctrine, Propel Les petits : Micro-ORM Kohana, Paris, ADODB Vous devez faire un choix : Plus c'est gros moins on le comprend Quand on choisit un composant, on le supporte (on maintient les versions, on suit les patches, etc.) Aucun ORM = plein de problèmes
  • 27.
    NoSQL ? Pour Montée en charge séduisante Gestion de déploiement familière Contre Qui s’y frotte … Pour en savoir plus remontez dans le temps (session était à 13h00)
  • 29.
  • 33.
  • 34.
    Montée en charge Code Réseau Profils de charge inattendus Temps de réponse plus long → Un appel synchrone à FB → Lag qui passe de 1 à 10 ms oublié sur la Home Page Base de données Matériel L'historique est dans la base de Quelques mégas sur disque, données → Pourquoi la question ? → c'est raisonnable ?
  • 39.
  • 40.
    Il reste... ledéploiement SMTP FTP / FTPs Quelques emails Pour la mise en prod Votre hébergeur Exports divers et variés Pour du SPAM Service dédié et externe Reparamétrage (cristend,etc.) Outils SendGrid Sarbacane EMailing Automate (EMA) En PHP Emailing phpList