Your SlideShare is downloading. ×
Plein PHAR !
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Plein PHAR !

3,906
views

Published on

Support de ma conférence "Plein PHAR !" donnée le 23 septembre 2011 lors de l'Open World Forum.

Support de ma conférence "Plein PHAR !" donnée le 23 septembre 2011 lors de l'Open World Forum.

Published in: Technology

1 Comment
3 Likes
Statistics
Notes
  • Merci ! Thanking you !
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
3,906
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
10
Comments
1
Likes
3
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

Transcript

  • 1. Plein PHAR ! Packagez vos applications avec PHAR http://medias.mageekbox.net/conferences/openWorldForum2011 frederic.hardy@mageekbox.net | http://blog.mageekbox.net | @mageekguyvendredi 23 septembre 2011
  • 2. Préambule http://medias.mageekbox.net/conferences/openWorldForum2011 ⇢ suhosin.executor.include.whitelist="phar" ⇢ php openWorldForum.src.phar -e Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 3. À propos ⇢ Développeur PHP depuis 12 ans ⇢ Agiliste ⇢ Architecte logiciel ⇢ Contributeur à divers projet open-source ⇢ atoum ⇢ PHP, VIM, FreeBSD Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 4. Plan ⇢ Feux de position ⇢ Feux de croisement ⇢ Feux de route Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 5. Feux de position ⇢ Présentation ⇢ Historique ⇢ Installation Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 6. Présentation Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 7. Définition ⇢ PHAR = PHP Archive ⇢ PHAR ≃ JAR Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 8. Objectifs ⇢ Un fichier unique ⇢ pour la distribution ⇢ pour lexécution Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 9. Fonctionnalités ⇢ Signature ⇢ Métadonnées ⇢ Compression ⇢ Exécutable ou non Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 10. Historique Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 11. Origine ⇢ 2007 : Extension PECL ⇢ Steph Fox (php|architect) ⇢ Greg Beaver (PEAR/PECL) ⇢ Marcus Börger (PHP 5) Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 12. Aujourdhui ⇢ 2009 ⇢ Extension intégrée à PHP 5.3 ⇢ 2011 ⇢ Silex ⇢ Photon ⇢ atoum ⇢ Behat ⇢ … Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 13. Installation Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 14. Configuration minimum ⇢ PHP ≥ 5.2 ⇢ Standard PHP Library ⇢ Compression ⇢ extensions zlib|bzip2 ⇢ Signature sécurisée ⇢ extension openssl Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 15. Compilation et configuration ⇢ Lors du ./configure ⇢ Ne pas utiliser --disable-phar ⇢ Ne pas utiliser --zend-enable-multibyte ⇢ Directives de configuration ⇢ phar.readonly ⇢ phar.require_hash ⇢ phar.cache_list Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 16. Feux de croisement ⇢ Mode demploi ⇢ Structure ⇢ Compatibilité ⇢ Création ⇢ Utilisation ⇢ Lutilitaire phar Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 17. Mode demploi Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 18. Archive exécutable ⇢ lisible par PHP directement ⇢ en CLI ⇢ via HTTP ⇢ au sein dun script Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 19. Archive non exécutable ⇢ Lisible uniquement au sein dun script Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 20. Structure Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 21. Composition ⇢ Fichier de démarrage ⇢ Manifeste ⇢ Chemin daccès ⇢ Permissions ⇢ Fichiers ⇢ Signature et métadonnées ⇢ Format interne PHAR | TAR | ZIP Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 22. Fichier de démarrage ⇢ Interprété lorsque larchive est ⇢ exécutée par PHP ⇢ incluse dans un script ⇢ Nest pas interprété via phar:// ⇢ Permet dinitialiser larchive ⇢ auto-chargement de classes ⇢ configuration ⇢ … Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 23. Format PHAR ⇢ Format « naturel » ⇢ Uniquement exécutable ⇢ .phar Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 24. Format TAR ⇢ Exécutable ou non ⇢ Chemin des fichiers ≤ 255 caractères ⇢ (.phar)?.tar Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 25. Format ZIP ⇢ Exécutable ou non ⇢ Moins efficace que PHAR ou TAR ⇢ (.phar)?.zip Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 26. Compatibilité Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 27. PHP ⇢ PHAR, TAR, ZIP ⇢ Dépend du fichier de démarrage ⇢ Des extensions disponibles Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 28. Reste du monde ⇢ Archives au format ⇢ PHAR ⇢ illisible ⇢ ZIP ⇢ lisibles et modifiables ⇢ TAR ⇢ lisibles et modifiables Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 29. Création Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 30. Classes ⇢ phar : archives exécutables ⇢ pharData : archives non exécutable ⇢ hérite de phar ⇢ pharFileInfo : fichier dune archive ⇢ Exceptions ⇢ pharException ⇢ runtimeException ⇢ invalidArgumentException ⇢ unexpectedValueException Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 31. __DIR__ et __FILE__ ⇢ Dans le fichier de démarrage ⇢ __DIR__ = répertoire de larchive ⇢ __FILE__ = archive ⇢ En dehors ⇢ __DIR__ = répertoire du fichier ⇢ __FILE__ = fichier Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 32. Sécurité ⇢ Archive exécutable ⇢ .phar(.tar|.zip)? ⇢ Création impossible par défaut ⇢ phar.readonly=1 ⇢ Solution ? ⇢ -d phar.readonly=0 en CLI ⇢ phar.readonly=0 + ini_set() Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 33. Exemple Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 34. Fichier de démarrage par défaut ⇢ TAR|ZIP ⇢ Ne fait rien ⇢ PHAR ⇢ CLI|HTTP ⇢ Support de PHAR non obligatoire ⇢ index.php obligatoire par défaut Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 35. Modifier le comportement par défaut ⇢ Utiliser un fichier différent ⇢ de index.php ? ⇢ pour la CLI ? ⇢ via HTTP ? ⇢ phar::setDefaultStub() Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 36. Exemple Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 37. Fichier de démarrage « home made »    ⇢ Doit ⇢ contenir du code valide ⇢ se terminer par __HALT_COMPILER () ⇢ ?> non obligatoire ⇢ ;S*?> Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 38. Méthodes dédiées ⇢ phar::mapPhar()|phar::webPhar() ⇢ performance|aliasing ⇢ phar::mungServer() ⇢ rend invisible larchive ⇢ phar::interceptFileFunc() ⇢ chemins de fichiers relatifs re-routés Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 39. Exemple Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 40. Ajouter des fichiers ⇢ interface arrayAccess ⇢ Phar::addFile() ⇢ Phar::addFromString() ⇢ Phar::addEmptyDir() ⇢ Phar::buildFromDirectory() ⇢ Phar::buildFromIterator() ⇢ SplFileInfo Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 41. Exemple Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 42. Manipuler des fichiers ⇢ Modification ⇢ Mêmes outils que pour la création ⇢ Suppression ⇢ interface arrayAccess ⇢ phar::delete() Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 43. Exemple Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 44. Signature ⇢ Intégrité ⇢ MD5 ⇢ SHA-1 (défault), SHA-256, SHA-512 ⇢ Intégrité + sécurité ⇢ OpenSSL Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 45. Exemple Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 46. Utilisation Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 47. Utilisation dans un script Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 48. Extraire des fichiers ⇢ Phar::extractTo() ⇢ tous les fichiers ⇢ un fichier spécifique ⇢ mais pas les répertoires Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 49. Lutilitaire phar ⇢ Livré en standard depuis PHP 5.3 ⇢ script PHP ⇢ permet de manipuler une archive ⇢ phar help Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 50. Exemple dutilisation Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 51. Feux de route ⇢ Métadonnées ⇢ Compression ⇢ Point de montage ⇢ Performances ⇢ Cas pratique Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 52. Métadonnées Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 53. Définition ⇢ Informations complémentaires ⇢ version, date, éditeur, documentation… ⇢ globales à larchive ⇢ par fichier ⇢ Stockées indépendamment des donnés ⇢ chaîne, entier, flottant, tableau, objet Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 54. Exemple sur une archive Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 55. Exemple sur un fichier Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 56. Compression Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 57. Possibilités ⇢ PHAR | TAR ⇢ globale ⇢ PHAR | ZIP ⇢ par fichier ⇢ Algorithmes ⇢ gzip ⇢ bzip2 Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 58. Règles de nommage PHAR TAR ZIP phar::NONE .phar (.phar)?.tar (.phar)?.zip phar::GZ .phar.gz (.phar)?.tar.gz (.phar)?.zip phar::BZ2 .phar.bz2 (.phar)?.tar.bz2 (.phar)?.zip Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 59. Compression globale Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 60. Compression locale Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 61. Décompression ⇢ Transparente lors de lutilisation ⇢ Peut être demandée explicitement ⇢ phar::decompress() ⇢ phar::decompressFiles() ⇢ pharFileInfo::decompress() Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 62. Points de montage Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 63. Utilité ⇢ Pouvoir accéder à des fichiers externes ⇢ journaux dévénements ⇢ fichier de configuration ⇢ … ⇢ Externe ou interne Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 64. Montage externe Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 65. Montage interne Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 66. Performances Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 67. Impact ⇢ Sans compression ⇢ Perte légère de performance ⇢ Avec compression ⇢ 10 à 15% de perte ⇢ phar.cache_list ⇢ APC ⇢ gain significatif ! Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 68. Cas réel Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 69. atoum ⇢ Framework de tests unitaires ⇢ simple, moderne et intuitif ⇢ http://github.com/mageekguy/atoum ⇢ http://downloads.atoum.org/nightly Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 70. Exemple en CLI Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 71. Exemple en PHP Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 72. Références ⇢ http://php.net/phar ⇢ http://blog.pascal-martin.fr/post/php-5.3-phar-php-archive ⇢ http://blog.mageekbox.net Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 73. Questions ? Plein PHAR ! | Open World Forum | Paris | 23 novembre 2011vendredi 23 septembre 2011
  • 74. Cette conférence est maintenant terminée, vous pouvez reprendre une activité normale ! frederic.hardy@mageekbox.net | http://blog.mageekbox.net | @mageekguyvendredi 23 septembre 2011

×