août 2012 (7)

mercredi 29 août 2012

Pourquoi des classes sans majuscule dans atoum ?

Régulièrement, des personnes me demande pourquoi atoum est codé en lowerCamelCase et non en UpperCamelCase. Et bien souvent, j'ai tendance à entendre à la fin de cette question (peut être à tort) le sous-entendu comme Symfony ou tout autre framework à la mode. Pour en finir une bonne fois pour  […]

Lire la suite

lundi 27 août 2012

300 + 1 = 301

300WatchersForAtoum.png

Je m'en suis aperçu tardivement, mais durant la semaine dernière, atoum, mon framework de tests unitaires simple, moderne et intuitif pour PHP ≥ 5.3 a commencé à être suivi par plus de 300 personnes. Il aura donc fallu un peu plus d'un an pour atteindre ce seuil symbolique qui a marqué l'histoire  […]

Lire la suite

vendredi 24 août 2012

Astuce à propos des notifications de OS X Mountain Lion

Lorsque j'utilise mon MacBook Air, j'ai toujours mon client Twitter qui occupe le tiers droit de mon écran, sur toute sa hauteur. Mais depuis ma migration vers OS X Mountain Lion, cette configuration me posait un problème. En effet, les notifications venaient se superposer à mon client twitter,  […]

Lire la suite

mardi 21 août 2012

À propos de la SYNTEC

Ce blog est essentiellement un blog technique, et en tant que tel, je n'y ai jamais exprimé d'idées sortant de ce cadre.

Certes, de temps à autres, je me suis exprimé sur des sujets relatifs au métier d'informaticien au sens large, mais cela a toujours été très ponctuel.

Mais aujourd'hui, à la lecture de cet article, je me dis qu'il est peut être temps que cela change.

Lire la suite

lundi 20 août 2012

Faire-part de naissance pour les geeks par un geek #2

Après 37 semaines de développement et donc avec presque 4 semaines d'avance par rapport au planning, nous sommes fier de vous annoncer que la version 0.0.1 de Lucile a été rendue publique ce samedi 18 août 2012 à 17h43. Elle est venue compléter la famille déjà composée des versions 7.1.0 de Valentin  […]

Lire la suite

vendredi 10 août 2012

unregister_shutdown_function() ?

PHP dispose d'une function permettant de d'exécuter du code une fois que le script en cours d'exécution est terminée.

Cette fonction, nommée register_shutdown_function() peut être très utile dans certain cas.

C'est par exemple grâce à elle qu'il est possible d'exécuter directement en faisant appel à PHP en ligne de commande un fichier contenant un ou plusieurs classes de tests unitaires, de la manière suivante :

# php path/to/unit/test/file

Son utilisation est très simple puisqu'il suffit de lui passer une fonction de rappel comme argument pour que cette dernière soit automatiquement appelée à la fin du script en cours d'exécution.

<?php

register_shutdown_function(function() use (& $phpEstDeLaMerde) {
      echo 'PHP est de la merde !' . PHP_EOL;
   }
);

echo 'Qu'est ce que PHP ?' . PHP_EOL;

// « PHP est de la merde » s'affichera après « Qu'est ce que PHP ? »

?>

Cependant, elle a un gros inconvénient.

Lire la suite

lundi 6 août 2012

Client FastCGI en PHP

La plupart du temps, PHP est utilisé en conjonction avec un serveur HTTP.

Dans ce cas, lorsque le serveur HTTP reçoit d'un client une requête nécessitant l'exécution d'un script PHP, il demande l'exécution du fichier en question à PHP et retourne son résultat au client.

Or, il existe plusieurs façon d'associer PHP à un serveur HTTP, via différentes SAPI.

Ainsi, PHP est par exemple la plupart du temps lié à apache via le module correspondant, tandis que des serveurs plus récents tel que nginx font appel à PHP via le protocole FastCGI.

Dans ce dernier cas, le script PHP est exécuté par un processus indépendant de celui du serveur HTTP et faisant office de serveur.

En tant que tel, il délègue donc l'exécution du script à l'un de ses processus fils et en retourne le résultat au serveur .

Afin d'optimiser les performances, ce serveur peut créer à l'avance lors de son démarrage un certain nombre de processus fils, afin de pouvoir répondre aux requêtes du serveur HTTP le plus rapidement possible.

De plus, il est tout à fait capable de créer des sous-processus supplémentaires en fonction de sa configuration et de la charge qu'il a à supporter.

Cette architecture est donc très efficace et offre de très bonnes performances, mais ce n'est pas son seul atout.

Lire la suite