Formation : Applications PHP, optimisation et performances
Se former avec
ORSYS
- Renseignements :
- Durée : 3 Jours
- Type : En centre
- Diplômant : Oui
-
Prix H.T. € :1490.00
- Objectifs :
- La disponibilité, la sûreté de fonctionnement et les performances des applications PHP sont des critères importants à leur intégration au SI d’entreprise. Ce stage vous apprendra à définir une stratégie répondant à ces exigences et à la mettre en œuvre sur des plateformes LAMP (Linux, Apache, MySQL, PHP).
- Public visé :
-
Responsable développement, ingénieur développement, architecte développement, chef de projet Web, développeur Internet et Webmaster.
- Pré-requis :
- Connaissance de base Serveur, PHP, MySQL, HTML, JavaScript.
- Introduction
- Disponibilité : éviter l'effondrement. Objectifs à terme. Etude des contraintes de performance.
- Stratégie d'optimisation. Découpage des éléments statiques et dynamiques. Utilisation du cache. Gestion de la bande passante. Optimisation de l'utilisation des bases de données. Optimisation du code PHP. Modules complémentaires PHP orientés performances.
- Scalabilité. Structure du code. Structure de l'application. URL absolues, relatives. Normes de codages. Fonctions propriétaires et intégration.
Linux
- Haute disponibilité et tolérance de panne. Définitions et problématiques. Cluster. Réplication de disque. Contrôle des services. Prise de contrôle IP. Equilibrage de charge.
- Quelques solutions : HeartBeat, Linux Virtual Server (LVS), Keepalived, IPTables.
- Compilation et processeur. Avantages. Performances. Profiter des multiprocesseurs. Les threads.
Inconvénients. Non-portabilité. Librairies non thread safe.
Travaux pratiques
Tolérance de panne avec keepalived : installation, configuration, test.
Serveur Apache
Sous-domaines : quand les utiliser ?
- Anticipation nécessaire à l'étude du projet. Liens absolus sur les éléments des sous-domaines. Impact sur le code de l'application. Transformation url relatives -> absolues. Utilisation d'un proxy cache redirecteur. Pas de transformation dans le code. Reverse proxy nécessaire.
Utilisation de SSL
- Intérêt et inconvénients. Cryptage des flux http. Dégradation des performances. Cartes accélératrices SSL. Partout ou non ? Pages d'authentification. Données sensibles. Sécurité : propagation des en-têtes HTTP (REFERER). Cipher et impact sur performances. Nombre de handshake SSL négociés. Clés sur 128 bytes, 256, 512 ...
Invocation de PHP
- CGI, FastCGI, Module.
Modules complémentaires
- mod_deflate : mise en œuvre de la compression. Avantages et inconvénients. Images. Documents binaires. Fichiers statiques (stylesheet, JavaScript).
- mod_cache : cache côté serveur. Avantages et inconvénients. Eléments statiques et semi-dynamiques. Politique de rétention. Mémoire ou disque ?
- mod_expires : cache côté client. Avantages et inconvénients. Images et fichiers statiques.
Travaux pratiques
Optimisation de base. Configuration et tests mod_deflate. Configuration et tests mod_expires.
SGBD : MySQL 5
- Structure des bases et des tables : type de champs, les index, les vues.
- Type de requêtes SQL de l'application : lecture, écriture.
- Réplication. Avantages et inconvénients. Mise en œuvre.
- Clustering. Avantages et inconvénients. Mise en œuvre.
Travaux pratiques
Installer un cluster MySQL : installation, configuration, test.
Code PHP
- Techniques de cache côté code PHP. Avantages et inconvénients. PEAR: Cache_lite.
- Gestion du cache par PHP. Les en-têtes (headers) pour la gestion du cache. Equivalent mod_expires (apache) en PHP.
- Système de template en PHP. Avantage et inconvénients.
- Code : à la recherche de goulet d'étranglement. Méthodes de diagnostic : identifier les lenteurs, code PHP ou appels externes, SQL: loguer les requêtes, SQL: identifier et optimiser les boucles, objets et performances.
- Profiling : quelques outils. Xdebug. Zend Suite. Autres.
- Données volatiles.
Travaux pratiques
Un cache PHP sur mesure. Sur une application type base de données documentaire (Wikipedia), mise en place d’un cache php pour éviter d’avoir à effectuer un traitement lourd à chaque requête.
Les caches d'opcode
- Intérêt. Mise en cache du code intermédiaire (opcode). L’augmentation des performances dépend des accès extérieurs.
- eAccelerator, TurckMMCache. Présentation (historique). Encodage de scripts. Exemple de fonctions.
- APC. Présentation. Intégration à PHP 6. Exemple de fonctions.
- Zend Optimizer. Présentation (Zend Suite). Intégration à PHP et compatibilité avec d’autres modules.
- Comparatifs performances et viabilité.
Travaux pratiques
Manipulation des caches d’opcode. Démonstration de Zend Plateform 3.0. Installation et utilisation des spécificités d’eAccelerator. Installation et utilisation des spécificités d’APC.
Ajax et Web 2.0, les pièges à éviter
- Performances. Compromis intérêt/performances. Cache et Ajax. SSL.
- Sécurité côté serveur. Qui demande quoi ?
- Type de données. HTML. JavaScript. XML. JSON.
Travaux pratiques
Utilisation du framework « mootools ». Adaptation d’une liste. Adaptation d’un formulaire. Adaptation d’un slide.
Portabilité et déploiement
- Les patchs sur le moteur PHP. Difficile à maintenir. Gain performance minime. Parfois spécifique (Linux/Win32).
- Modules complémentaires et fonctionnalités spécifiques. Interaction entre module et compatibilité. Dépendance cruciale en cas d’utilisation des fonctionnalités spécifiques d’un module complémentaire. Augmentation potentielle de l’instabilité (segmentation fault). Difficile à debugger.
- Systèmes d'exploitation et stabilité des solutions libres. La majorité des composants LAMP sont portables. Différentes performances et stabilité. Différence d’habitude (compilation, binaire…).
- Ouvrir une application Intranet sur Internet. Liens absolus. Liens relatifs. Externalisation sur port non standard.
- Marginalité et fonctionnalité propriétaire. Balise "base href" (SharePoint). Manipulation d'URL en JavaScript. Headers spécifiques (OWA). Upload et composants propriétaires (activeX).
- Adresse IP, session et reverse proxy. REMOTE_ADDR. HTTP_X_FORWARDED_FOR. HTTP_X_FORWARDED_HOST. VirtualHost et nom d'hôte.
- Authentification, SSO et reverse proxy. 1 nom d'hôte, n applications, n bases d'utilisateur. n nom d'hôte, n applications, 1 base d'utilisateur.
- Réécritures. Liens. Cookies. Ajax et URL.
- Page de redirection.
Travaux pratiques
Réécriture de contenu avec un reverse proxy. Configuration d’un reverse proxy Apache. Installation, configuration et test du module mod_proxy_html.
Conclusion
Importance de l'anticipation
- Dialogue équipe développement, architecte réseau, sécurité applicative.
- Bloqué à l’étape mise en production.
- Obligé de modifier le code de l’application.
- L’intégration et l’interaction avec d’autres applications devient délicate.
Vouloir gagner du temps
- Technologies propriétaires et technologies libres.
- Conformité RFC et normes.
- Rationalisation des développements et choix des outils.
Annexes
2008 au 2009 (13)
2008 au 2009 (44)
2008 au 2009 (31)
2008 au 2009 (69)
2008 au 2009 ()
2008 au 2009 (35)
2008 au 2009 (75)
2008 au 2009 (92)