RSS
people

Lire un flux RSS avec PHP 5 et SimpleXML

Dans le cas où vous souhaiteriez réaliser votre propre agrégateur de flux RSS en PHP 5 objet, une méthode très simple s’offre à vous, grâce à l’extension SimpleXML. Cette extension permet de naviguer très simplement dans vos fichiers XML, dont un flux RSS fait partie.

Tout d’abord, petit rappel de la structure d’un flux RSS :

<rss version=”2.0″>
   <channel>
      <title>Jonathan Petitcolas</title>
      <description>Les fantasques tribulations d’un geek déluré - Flux RSS</description>
      <lastBuildDate>Wed, 27 Sep. 2008 00:30:30 -0700</lastBuildDate>
      <link>http://www.jonathan-petitcolas.com</link>
      <item>
         <title>Mon dernier article</title>
         <description>Un dernier article parlant d’un flux RSS</description>
         <pubDate>Wed, 27 Sep. 2008 00:30:30 -0700</pubDate>
         <link>http://www.jonathan-petitcolas.com/</link>
      </item>
   </channel>
</rss>

Comme on peut le constater, le fichier est relativement simple. Toutes les news d’un site sont dans des balises item. Il vous suffit donc de les récupérer, et de les parcourir. Au choix, soit vous pouvez utiliser des expressions régulières (solution très bourrine, mais qui fonctionnera), soit on utilise SimpleXML, une extension disponible depuis PHP 5 qui vous permettra de naviguer très simplement dans n’importe quel fichier XML.

Tout d’abord, chargeons notre fichier XML.

$xml = simplexml_load_file("http://newsrss.bbc.co.uk/rss/newsonline_uk_edition/world/rss.xml");

Une fois celui-ci chargé, nous pourrions afficher un print_r($xml); pour revoir la structure de notre fichier, telle que je l’ai écrite ci-dessus. Mais, nous ne voulons que naviguer parmi nos éléments. Pour ce faire, deux méthodes.

Soit on passe uniquement par des objets PHP crées automatiquement du fichier XML. Cette méthode, très simple et ne nécessitant aucune autre connaissance, a cependant le mauvais goût d’occuper pas mal de mémoire (on stocke vraiment TOUT). Par exemple, si on veut atteindre le titre du premier article :

echo $xml->item[0]->title;

L’autre méthode, un peu plus en finesse, nous permettra de libérer la variable $xml au profit d’une variable à l’empreinte mémoire plus faible, ne contenant que les balises qui nous intéressent. Pour ce faire, il faudra par contre des notions de X-Path. Pour ceux qui ne connaîtraient pas ce langage, sachez que pour récupérer tous les éléments item de notre fichier, il suffira d’utiliser l’instruction //item.

On peut alors afficher simplement les différents titres de nos news :

echo ‘<ul>’;

foreach($xml->xpath(‘//item’) as $item)
{
   echo ‘<li>’.$item->title.‘</li>’;
}

echo ‘</ul>’;

Et voilà ! Vous savez à présent comment parser très simplement un flux RSS avec SimpleXML. Libre à vous de recoder le nouveau NetVibes ! :p

Aucune réaction | Tags : ,

Utiliser Subversion (SVN) avec Tortoise

Initialement destiné à mes associés, j’ai décidé de vous faire partager ce petit tutoriel sur l’utilisation de Tortoise, un logiciel qui vous permettra de gérer facilement vos fichiers avec un serveur SVN. Ne vous attendez pas à y trouver un exposé très technique de toutes les fonctionnalités offertes par ce logiciel et par Subversion, mais simplement une approche pour les non-informaticiens qui doivent utiliser cet outil. :)

Lire la suite »

Aucune réaction | Tags : , ,

Optimisation MySQL - Utilisation des alias de table

Nous allons aujourd’hui traiter d’optimisation MySQL, en nous penchant sur le cas des alias de table. Ceux-ci ont-ils un réel impact sur les performances de nos requêtes ? C’est ce que nous allons voir dans ce billet.

Lorsque vous écrivez une requête SQL, il est possible de spécifier un alias au nom des tables que vous utilisez. Cela permet d’utiliser plusieurs champs portant le même nom dans des tables différentes tout en réduisant le nombre de caractères de votre requête. Un exemple sera bien plus parlant qu’un long discours :

SELECT
     M.firstName,
     M.lastName,
     C.name
FROM
     members M
     LEFT OUTER JOIN countries C ON ( C.id = M.countryId );

Cependant, on peut se demander si ces alias ont un impact au niveau des performances de ces requêtes. On pourrait supposer que les alias de tables sont favorables aux performances. Mais qu’en est-il réellement ?

On spécifie explicitement au serveur le nom des tables dans lesquelles il doit rechercher le champ spécifié. Ainsi, il n’a pas à le déterminer lui-même, en parcourant la structure de toutes les tables présentes dans la requête. Ce qui pourrait nous laisser croire que l’utilisation des alias optimise nos requêtes. Vérifions donc notre théorie.

Pour ce faire, effectuons quelques tests d’exécution de requête sur une et deux tables, en faisant varier la présence d’alias et le moteur de bases de données. On obtient les résultats suivants (chiffre moyen basé sur l’exécution de 10.000 requêtes sur le même serveur de développement) :

InnoDB :

Une table, sans alias : 4.358 ms
Une table, avec alias : 4.382 ms
Deux tables, sans alias : 5.485 ms
Deux tables, avec alias : 5.421 ms

MyISAM :

Une table, sans alias : 4.488 ms
Une table, avec alias : 4.449 ms
Deux tables, sans alias : 5.376 ms
Deux tables, avec alias : 5.406 ms

Ainsi, comme nous pouvons le constater, les alias de tables n’ont aucun impact sur les performances. Cependant, ils permettent d’accroître grandement la lisibilité de vos requêtes, ce qui au final, accroît tout de même votre productivité en tant que développeur. La mort des alias n’est donc pas encore pour aujourd’hui. ;)

Aucune réaction | Tags :

Dessiner avec des tableaux HTML

Voici une vidéo surprenante dans laquelle un développeur s’amuse à dessiner avec des tableaux HTML.

Impressionant, n’est-ce pas ? Si bien que je lui pardonne l’utilisation de tableaux pour la mise en page et l’utilisation de la très vieille norme (mettre un bgcolor dans une balise body… Je vais en faire des cauchemards toute la nuit !). ;)

Aucune réaction | Tags : ,

Apéro PHP le 18 septembre

Je relaye l’information lancée par Raphaël Desbonnet concernant l’organisation d’un apéro PHP le jeudi 18 septembre 2008 à 19h30. Le principe ? On prend l’apéro, en parlant de PHP. Bref, un rendez-vous pour geeks développeurs. Celui-ci se passera boulevard de Sébastopol. Je vous laisse vous reporter à la description donnée par Raphaël pour de plus amples informations.

Je serais présent, si certains d’entre vous veulent enfin voir le geek qui se cachent derrière ces lignes. Enfin vous pourrez voir en chair et en os ce génie à la verve créative sans limites, cet être merveilleux qui développe d’une manière sans aucun précédent, et cette modeste personne aussi. :p

Aucune réaction | Tags :