Symfony Live 2009 Etude de Cas : Mise en place d un générateur de contenu et de flux XML à l aide des «tasks»

Dimension: px
Commencer à balayer dès la page:

Download "Symfony Live 2009 Etude de Cas : Mise en place d un générateur de contenu et de flux XML à l aide des «tasks»"

Transcription

1 Symfony Live 2009 Etude de Cas : Mise en place d un générateur de contenu et de flux XML à l aide des «tasks» sflive Event 09 [ The Shopper Activation Agency 1 ]

2 PRESENTATION sflive Event 09 2

3 A propos de moi Développeur php depuis 2000 et particulièrement sur symfony depuis un peu plus de 2 ans. Cartesis de 1997 à 2006 en tant que Web-manager. Chef de projet chez Logica de 2006 à 2008 Chef de projet chez Business Lab depuis Octobre 2008 sflive Event 09 3

4 A propos de business Lab Une agence de communication, spécialisée sur le shopper mettant la créativité et l idée au cœur de son approche intégrée. sflive Event 09 4

5 NOTRE MISSSION Comprendre l ensemble des séquences du processus d achat afin de créer les conditions du passage à l acte sur les différents points de contact et d expérience de nos marques. sflive Event 09 5

6 Clients actifs Grande consommation Distribution Tourisme / Loisirs Services Media / Culture Divertissement Industries / Télécoms

7 LE PROJET sflive Event 09 7

8 A propos du projet LeParisien.fr souhaitait mettre en place une chaine cinéma afin de remplacer une application acquise marque blanche. Ils souhaitaient également offrir un service d informations localisées à leurs visiteurs. sflive Event 09 8

9 A propos du projet 4 flux Xml sont envoyés par un prestataire tout les mardi : Un flux listant les salles de France (env noeuds) Un flux listant les films à l affiche pour la semaine (env noeuds) Un flux listant les horaires de projections pour la semaine. (env noeuds) un flux listant le top 10 des films de la semaine (60 noeuds) OBJECTIF : générer les (env) fichiers nécessaires à l application à partir de ces 4 fichiers. sflive Event 09 9

10 Périmètre projet Pré-requis du client Générer des pages en php «statiques» au sein d une arborescence logique. («include» et «file_exists» sont les seuls traitements php autorisés sur les frontaux). Un temps de génération < 3minutes. Système de log à chaque étapes du batch Colonne de droite et éléments contextuels de l application re-générés toutes les heures et localisés par département. Génération automatique (CRON) (pas besoin de restitution au niveau d un navigateur web dans un premier temps) Simplifier l accès à l application pour l équipe en charge de la maintenance. sflive Event 09 10

11 Résultat sflive Event 09 11

12 L équipe Deux webdesigners (sans compétence symfony) Un développeur (php/symfony) Un chef de projet technique Un chef de projet fonctionnel sflive Event 09 12

13 Objectifs Notre objectif était de profiter au maximum de l architecture MVC de symfony et des outils du framework (Fichiers de configuration, Helpers, Routing, Partials) bien que l application finale ne soit pas gérée par le framework lui -même. Paralléliser au maximum le travail des développeurs et des webdesigners sflive Event 09 13

14 sfconfig::get( foo') Route get_partial( path ) sflive Event 09 14

15 L APPLICATION FRONT sflive Event 09 15

16 Mise en place de l application frontend php symfony generate:project cinema php symfony generate:app front sflive Event 09 16

17 Configuration app.yml routing.yml sflive Event 09 17

18 Intégration des templates Les webdesigner ont été en mesure d intégrer leur travail en parallèle du travail fait sur les tâches Normes Imposées : DRY (Don t Repeat Yourself) Mettre en place un système de «Partial» intelligent sflive Event 09 18

19 LE GENERATEUR sflive Event 09 19

20 fichiers à générer Des Des portions fichiers Les de XML pages code ciblés du HTML et site consolidés réutilisables sflive Event 09 20

21 Refactoring des XMLs 2 Objectifs : Créer des flux XML ciblés pour pouvoir les utiliser dans d autres applications. Limiter les temps de traitements (de 1h45 à 5 mins) L application va donc créer : Des flux contenant toutes les projections pour un films. Des flux contenant toutes les projections pour une salle. Des flux contenant toute les projections pour une région donnée. Des flux contenant toute les projections pour un département donné. Un flux contenant toutes les projections pour un code postal donné. sflive Event 09 21

22 Génération de partials Pouvoir réutiliser des bouts de «code» lors de la génération des pages du site. Pouvoir faire des «include» de ces bouts de code dans au niveau du site éditorial, du moteur de recherche et des pages du site. sflive Event 09 22

23 Mise en place des tasks php symfony generate:task batchcinecleanall php symfony generate:task batchcinecleanpage php symfony generate:task batchcinecleanpartial php symfony generate:task batchcinecleanxml php symfony generate:task batchcine php symfony generate:task batchcinerightblock sflive Event 09 23

24 Mise en place des tasks php symfony sflive Event 09 24

25 «Tasks» utiles au développement php symfony generate:task batchcinecleanall php symfony generate:task batchcinecleanpage php symfony generate:task batchcinecleanpartial php symfony generate:task batchcinecleanxml php symfony generate:task batchcine php symfony generate:task batchcinerightblock sflive Event 09 25

26 «Connection» des tâches à l application front sflive Event 09 26

27 Gestion des fichiers (récupération / Suppression) lib/task/batchcinecleanxml.class.php sflive Event 09 27

28 Gestion des fichiers (récupération / Suppression) lib/task/batchcinecleanpage.class.php sflive Event 09 28

29 Gestion des fichiers (récupération / Suppression) lib/task/batchcinecleanall.class.php sflive Event 09 29

30 Mise en Place des tasks php symfony generate:task batchcinecleanall php symfony generate:task batchcinecleanpage php symfony generate:task batchcinecleanpartial php symfony generate:task batchcinecleanxml php symfony generate:task batchcine php symfony generate:task batchcinerightblock sflive Event 09 30

31 Execute sflive Event 09 31

32 ExecuteBatchClean sflive Event 09 32

33 Principe de génération Dans apps/front/templates/_meilleursfilms.php Dans apps/front/config/routing.yml sflive Event 09 33

34 Questions? Gregory SCHURGAST Mer Business Lab sflive Event 09 [ The Shopper Activation Agency 34 ]