Quand, fin 94, Rasmus Lerdorf a développé un petit programme destiné à pointer les consultations de son CV sur sa page personnelle (Personal Home Page...), il ignorait qu'il posait les bases d'un langage qu'utilisent aujourd'hui deux millions de sites pour générer dynamiquement leurs pages HTML.
Devenu PHP/FI -version 2 de PHP- puis PHP 3.0, le petit programme du début est aujourd'hui massivement adopté par la communauté des développeurs web. L'équipe -car Rasmus Lerdorf n'est plus seul- qui a participé aux développements sur le mode du logiciel libre peut être fière du résultat obtenu : PHP fait jeu égal avec ASP (Active Server Pages), son concurrent direct du monde Microsoft et est recensé comme le module le plus fréquemment installé sur les serveurs Apache.
Version 4 : un moteur entièrement réécrit...
PHP 3.0 reposait sur un interpréteur qui exécute les commandes au fur et à mesure qu'il parcourt le code. Cette technique, dont les performances ont donné, et donnent encore, toute satisfaction aux utilisateurs de PHP3, a été totalement remplacée dans la version 4 par un moteur entièrement réécrit dont le principe s'inspire des nouveaux compilateurs à la volée qu'on a vu apparaître avec Java.
D'un langage interprété classique, PHP est donc devenu un langage compilé puis exécuté dans la foulée, générant ainsi un gain de performance significatif entre la version 3 et la version 4 pour des scripts faisant largement appel à des boucles par exemple. En fait, plus le script est long et complexe, plus le gain de performance est grand.
Cette nouvelle version a été également l'occasion de remettre entièrement à plat l'architecture de PHP. Ainsi l'interfaçage PHP avec un serveur web est nettement simplifiée : le code du moteur est totalement indépendant du serveur web et s'interface avec celui-ci via une couche abstraite qu'il suffit de redéfinir pour porter PHP sur un serveur web différent.
Ainsi, Apache dispose d'un module PHP mais aussi IIS (Microsoft) qui, grâce à cette nouvelle architecture utilise une dll ISAPI à la place d'un CGI, comme c'était le cas dans la version 3. Le gain de rapidité est très sensible.
PHP étant fourni sous licence Open Source et parfaitement documenté, rien ne vous empêche d'écrire votre propre couche abstraite pour porter cet environnement de développement sur votre serveur web préféré.
La gestion
des sessions
plus puissante
avec PHP 4.0
qu'avec ASP
|
|
...et une gestion optimisée de la mémoire
Afin d'optimiser la consommation de la mémoire et le temps nécessaire à l'instanciation des blocs de mémoires des différentes variables, PHP 4.0 intègre maintenant un compteur de référence. Autrement dit :
la copie d'une variable dans une nouvelle variable ne duplique pas la zone mémoire mais crée une référence vers une zone mémoire partagée.
Par exemple, si vous avez :
$a = 10;
$b = $a;
$b n'occupe pas de mémoire supplémentaire mais fait simplement référence à $a. Mais il ne s'agit pas d'un véritable pointeur : si la valeur de cette zone mémoire vient à changer en manipulant l'une des variables, la zone mémoire est alors dupliquée pour garantir l'indépendance des variables.
Gains en consommation de mémoire, en rapidité et surtout en fiabilité.
Car un nouveau type de donnée apparaît : le type "resource". Grâce au compteur de référence, la libération manuelle de la mémoire après l'utilisation de variables issues de certains modules (MySQL, Oracle, XML, par exemple) n'est plus nécessaire.
Ce qui s'écrivait auparavant :
<?
while($ma_ligne = sql_get_row($mon_resultset))
{
print query_result($ma_ligne, "nom");
query_free($ma_ligne);
}
?>
s'écrit maintenant sans la ligne "query_free($ma_ligne);". Or l'oubli de cette ligne était souvent à l'origine de sérieuses fuites mémoires. A chaque itération de la boucle, le compteur de référence de la ressource $ma_ligne est remis à zéro et la mémoire est libérée automatiquement.
Enfin, pour la manipulation de variables affectées à la même zone mémoire, PHP 4.0 gère également des alias, équivalents PHP des pointeurs en C.
Une API étendue
PHP supporte depuis la version 3.0 l'encapsulation, le polymorphisme et l'héritage qui, comme chacun sait, sont les principes essentiels d'un véritable langage orienté objet. Mais la version 4.0 va plus loin en apportant le support de COM et même de DCOM grâce à une API (Application Programming Interface) qui a fait peau neuve.
Vous pouvez maintenant instancier dynamiquement des composants beaucoup plus complexes et même distribuer les traitements en utilisant des composants DCOM. Pour instancier un composant il suffit d'utiliser la classe prédéfinie COM en passant en argument le nom du composant en tant que constructeur.
Enfin, vous pouvez toujours utiliser PHP simplement en mode script pour développer des applications plus simplement en utilisant une méthode de type RAD (Rapid Application Development method).
La gestion des sessions
La gestion des sessions sous PHP 3.0 nécessitait le recours à un module externe : phpLib. PHP 4.0 la prend directement en charge et, comble du raffinement, permet une grande souplesse dans la façon dont peuvent être stockées les sessions sur le serveur : dans un fichier plat, en mémoire, dans une base de données, dans le repository d'un Web Distributed Data Exchange (WDDX) ou dans... ce que vous voulez ! Il suffit dans ce cas d'écrire votre propre module de stockage via l'API de modules PHP.
Sur ce point précis, PHP est clairement supérieur à ASP qui, en standard, n'est capable de gérer la session qu'en mémoire. De fait, la manipulation des sessions peut rapidement s'avérer catastrophique sur un site à fort trafic ce qui conduit de nombreux développeurs à ne pas recourir aux sessions et à déléguer ce rôle primordial à de simples cookies stockés sur le poste client. La souplesse de PHP lui permet d'assurer sans difficulté la montée en charge sans compromis de développement sur une question cruciale comme la gestion des sessions.
Des librairies à la pelle
PHP 4.0 offre de nombreuses librairies ou packages externes qui augmentent les possibilités du moteur, que ce soit pour l'accès aux bases de données (Oracle, Sybase, SQL Server, ODBC, ...) ou pour la génération dynamique de graphiques ou de documents PDF directement sur le serveur.
Ajoutez à ces librairies de très nombreuses applications largement supportées par une communauté de développeurs des plus actifs, comme par exemple phpMyAdmin qui permet d'administrer une base de données avec un simple navigateur, ou encore phorum, un ensemble de scripts permettant de gérer un forum web.
Last but not least, PHP est accompagné d'un parser XML sous licence Open Source dont nous vous reparlerons.
Un choix d'actualité !
Disponible dans sa version finale 4.0.0 depuis le 22 mai 2000, PHP est un environnement de développement portable et disponible sur de nombreuses plates-formes et sur de nombreux serveurs web, y compris sous Windows NT avec IIS.
Si, comme certains l'affirment, la présence d'ASP dans l'offre Windows NT-IIS est la raison la plus souvent avancée dans le choix de IIS comme serveur web, on peut légitimement se demander si le vrai danger pour Microsoft coté serveur ne serait pas PHP plutôt qu'Apache. 