Fan de Web, développeur, admin système, amateur de photo et apprenti entrepreneur.

Posts Tagged: php

Text

Un billet rapide pour vous faire partager un fonctionnement du YAML qui peut générer quelques résultats surprenants !

Prenons un fichier app.yml :

all:

  foo:

    bar: [1, 2, 3, 4, 5]

test:

  foo

    bar: [a, b, c]

Une fois mon application lancée en test, je m’attends à ce que sfConfig::get(‘app_foo_bar’) me retourne array(‘a’, ‘b’, ‘c’) ? 

Et bien non ! J’obtiens comme retour array(‘a’, ‘b’, ‘c’, 4, 5) … surprenant non ?

Pourtant, en changeant le formatage de mon YAML, on comprend mieux ce qu’il se passe :

all:

  foo:

    bar: 

      - 1

      - 2

      - 3

      - 4

      - 5

test:

  foo

    bar: 

      - a

      - b

      - c

L’environnement de test va donc seulement surcharger les 3 premières valeurs de la configuration foo_bar, laissant les valeurs 4 et 5 dans mon tableau.

Faites donc bien attention aux syntaxes dans les fichiers YAML, ça vous évitera des surprises !

Posted via email from Un blog ? Pour quoi faire ? | Comment »

Text

Juste un billet rapide en espérant qu’un jour quelqu’un sera heureux de trouver ici ce que je n’ai pas pu trouver sur Internet.

J’ai amené Symfony dans mon entreprise il y a 3 ans maintenant et presque tous nos projets tournent avec. Pourtant, la gestion de la cache a toujours été un cauchemar.

Comme sûrement beaucoup de sites à gros trafic, nous travaillons avec des grappes de frontaux Web raccordés à un serveur NFS afin de distribuer les sources PHP.

Nous avons vite compris que mettre la cache Symfony sur un montage NFS était de la folie et c’est avec joie que nous avons accueilli l’arrivée de Symfony 1.1 et sa configuration du répertoire de cache, mais depuis, chaque “symfony cc” restait un moment délicat car il arrivait régulièrement qu’un serveur ne reconstruise pas sa cache correctement … et là, la page blanche, des alertes partout et des développeurs en train de faire des cc frénétiquement en surveillant la porte du patron.

Chose étrange, personne ne semble avoir le même problème, je me permets donc de contacter directement Sensio Labs (éditeur du Framework) qui m’explique que même en dehors de la cache, Symfony n’aime pas NFS et que pour une solution, il fallait mieux contacter leur service commercial (sic … mais je ne peux pas leur en vouloir :)). Je m’exécute donc et, dans l’urgence, je me débarrasse de nos serveurs NFS … c’est mieux, mais la cache continue de temps en temps à nous faire peur.

C’est seulement cette semaine, dans une ultime tentative, que je m’attaque à notre cache OPCODE : Xcache.

Il y a quelques années, Xcache était la référence de la cache OPCODE, rapide, simple, stable. Mais depuis, il faut l’avouer, le projet n’a pas vraiment évolué, pris de vitesse par APC qui s’impose aujourd’hui comme la solution de référence.

Avec APC, le miracle s’accomplit, j’ai beau faire des cc en masse, rien ne semble altérer la stabilité de notre application malgré des centaines de hits client.

Mais la véritable surprise, ce sont les performances : 30% de gain sur nos graphes CPU, il était vraiment temps de changer.

Conclusion, pour vos projets Symfony, oubliez NFS, copiez vos sources en local sur cache machine, oubliez Xcache, utilisez APC !

Et pour les curieux, voici la configuration APC retenue :

[apc] apc.enabled=1 ; 1 segments of 60Mo apc.shm_segments=1 apc.shm_size=60 ; No optimization apc.optimization=0 ; Never expire apc.ttl=0 apc.user_ttl=0 ; workaround for CLI apc.enable_cli=1 ; Symfony make lot of path lookups, try to optimize apc.include_once_override=1 apc.canonicalize=1 ; Wait 2 seconds to rebuild cache apc.file_update_protection=2

Posted via web from Un blog ? Pour quoi faire ? | Comment »

"Profiling #Symfony plugin http://icio.us/cuhthk"