Phing: Un outil de build type Ant pour PHP

Phing, PHing Is Not Gnu make,  est une librairie PHP du FrameWork PEAR permettant d’exécuter une suite de commandes plus ou moins complexes tout comme l’utilitaire make pour les languages comme C++.

Elle fonctionne de la même manière que Ant pour Java, c’est à dire qu’un fichier XML décrit les traitements à effectuer et leur séquencement. D’ailleurs, de nombreuses commandes Phing sont inspirées par Ant. La documentation Phing n’est pas très complète mais en mélangeant les deux outils il est tout à fait possible de trouver son bonheur.

Cet outil permet aussi bien de créer une archive (tar.gz, ZIP), une sauvegarde du contenu, un déplacement de fichier, que des tâches beaucoup plus complexes comme le déploiement complet d’une application web. Il peut communiquer directement avec la base de données, faire des traitements sur des fichiers, …
Une fois qu’on a commencé à l’utiliser, on ne peut plus s’en passer… Pour ma part, le confort apporté pour la manipulation des contenus sensibles (sauvegarde + restauration automatisées) est vraiment significatif!

J’ai aujourd’hui créé une commande permettant de créer une version stabilisée d’un site en cours de développement (suppression des répertoires .svn, suppression du contenu, sauvegarde de la base de données). J’ai aussi développé un outil de déploiement permettant de restaurer une version du site à un instant donné ce qui est très pratique quand plusieurs personnes sont amenées à travailler sur le même projet…

Cette bibliothèque s’exécute en ligne de commande et peut s’installer de deux façons:

- Autonome: Les sources sont téléchargeables et peuvent s’exécuter sans l’appui direct du framework PEAR.

- Intégré: Il faut installer PEAR puis exécuter les commandes décrites ici pour installer Phing

Logo de la librairie PEAR Phing

Logo de la librairie PEAR Phing

Zend_Search_Lucene: Module d’indexation pour recherche Full-Text avancée

J’ai eu récemment l’occasion de m’intéresser à Lucène, moteur de recherche orienté full-text et développé en Java par la communauté Apache. Un portage de cette bibliothèque sur PHP a été fait par les développeurs du Zend Framework dans un module appelé: Zend_Search_Lucene.

A partir de cet outil que j’ai eu à développer différentes solutions de recherche. J’ai principalement eu à traiter de l’indexation d’objets XML simple d’une quinzaine de champs. L’interrogation se faisait par contre aussi bien sur du full-text que sur du multi-critères même si ce dernier m’a posé pas mal de problèmes… De plus les performances ne sont pas vraiment au rendez-vous dès que le nombre d’objets indexés devient trop important ou trop complexe.

Ce module est assez intéressant à prendre en main et la documentation fournie par Zend est très complète. Il est complétement autonome par rapport au reste du FrameWork et donc assez léger.
Pour des personnes qui n’ont pas trop l’habitude de travailler sur des recherches indexées en dehors d’une Base de Données, il s’agit d’un bon point de départ pour comprendre et appréhender des concepts plus avancés…