Page 1 sur 1

importer un flux dans une base sql et afficher sur le site

Posté : 08 mars 2008, 23:33
par erwan145
Bonjour,
On me propose un flux de news en se connectant par ftp, genre:

adresse.ftp
username:X1
password: X2

ceci m'amene a des news xml du style:

Code : Tout sélectionner

<?xml version="1.0" encoding="UTF-8" ?> - <nitf version="-//IPTC//DTD NITF 3.1//EN"> - <head> <meta name="Tickers" content="(OTC:ESLOY)" /> <meta name="Tickers" content="(Bloomberg:EF@FP)" /> <meta name="Tickers" content="(EUROCLEAR:12166)" /> <meta name="Tickers" content="(ISIN:FR0000121667)" /> <meta name="Language" content="fr" /> <meta name="Source" content="xxxx" /> - <tobject> <tobject.subject tobject.subject.type="xxxx" tobject.subject.matter="SubjectCode" tobject.subject.detail="ERN" tobject.subject.refnum="1" /> <tobject.subject tobject.subject.type="xxxxx" tobject.subject.matter="Topic" tobject.subject.detail="Topic" tobject.subject.refnum="4016018" /> <tobject.subject tobject.subject.type="xxxxx" tobject.subject.matter="SubjectCode" tobject.subject.detail="BFA" tobject.subject.refnum="2" /> <tobject.subject tobject.subject.type="xxxxx" tobject.subject.matter="Topic" tobject.subject.detail="Topic" tobject.subject.refnum="1014000" /> <tobject.subject tobject.subject.type="xxxxxx" tobject.subject.matter="IndustryCode" tobject.subject.detail="HEA" tobject.subject.refnum="1" /> <tobject.subject tobject.subject.type="xxxxx" tobject.subject.matter="Topic" tobject.subject.detail="Topic" tobject.subject.refnum="4006005" /> <tobject.subject tobject.subject.type="xxxxx" tobject.subject.matter="IndustryCode" tobject.subject.detail="MTC" tobject.subject.refnum="2" /> <tobject.subject tobject.subject.type="xxxxxx" tobject.subject.matter="Topic" tobject.subject.detail="Topic" tobject.subject.refnum="4002006" /> <tobject.subject tobject.subject.type="xxxxx" tobject.subject.matter="GeographyCode" tobject.subject.detail="France" tobject.subject.refnum="1" /> </tobject> - <docdata management-status="usable"> <doc-id id-string="3610314fr-1" /> <date.issue norm="20080306T074800Z" /> <urgency ed-urg="4" /> <fixture fix-id="" /> </docdata> </head> - <body> - <body.head> - <hedline> <hl1>Essilor : Résultats 2007</hl1> </hedline> <distributor>xxxxx</distributor> - <dateline> <location>CHARENTON-LE-PONT, France</location> <story.date>March 6</story.date> </dateline> - <abstract> <p /> </abstract> </body.head> - <body.content> - <block> <p>CHARENTON-LE-PONT, France, March 6 --</p> <p>- Une performance solide dans la continuité</p> <p>Le Conseil d'administration d'Essilor, numéro un mondial de l'optique ophtalmique, a arrêté les résultats consolidés définitifs de l'exercice 2007.</p> <p style="pre">En millions d'euros 2007 2006(2) Variation Chiffre d'affaires 2 908,1 2 690,0 + 8,1 % Contribution de 527,4 482,6 + 9,3 % l'activité(1) En % du chiffre 18,1 % 17,9 % --- d'affaires Résultat opérationnel 504,6 460,5 + 9,6 % Résultat net (part du 366,7 328,7 + 11,6 % groupe) En % du chiffre 12,6 % 12,2 % --- d'affaires Bénéfice net par action 1,78 1,61(3) + 10,8 % (en euros)</p> <p />
je souhaiterai importer ces contenus et les afficher sur mon site avec les titres en home et le lien vers une page qui contient la news. (je dispose d'une base sql peut etre y a t il moyen d'importer les news directement dans la base)

Le probleme est que je ne sais pas comment par ou commencer ?

Ce flux est mis a jour tous les jours, y a t il un moyen de creer une connexion permanente et qu'il se mette a jour régulièrement tous les jours?

Merci de votre aide.

Posté : 09 mars 2008, 00:32
par Cyrano
Schématiquement, ce n'est pas vraiment compliqué.

Point intéressant : le flux est en XML donc déjà structuré, donc d'autant plus facile à stocker en base de données. mais ce n'est pas forcément la solution la plus appropriée à moins de vouloir conserver des archives.

Ce que tu peux faire, c'est utiliser les données du fichier XML pour l'affichage directement sans transiter par une base de données. Comme il y a mise à jour quotidienne, tu peux établir une date de validité à ton fichier lorsque tu le récupères, validité que tu fixes dans un fichier de configuration.

Lors de l'accès à une page du site affichant ces informations, ton code doit vérifier si le fichier est à jour. S'il l'est, tu passes à l'affichage, sinon, tu commences par récupérer la dernière version et tu poursuis avec l'affichage. Les visiteurs suivants bénéficieront directement de l'affichage jusqu'à ce que la date de validité soit dépassée.

Et si tu utilises PHP5, tu as les fonctions SimpleXML qui te permettront de sélectionner les éléments que tu veux afficher et mettre en forme. Pas de base de données, pas de requêtes SQL et pas de transit réseau entre Apache et ton SGBD, tu traites des données dont la source est un fichier XML au lieu d'un SGBD.

J'ajouterais enfin que si tu veux éviter l'attente de récupération FTP au premier visiteur demandant les informations, tu peux toujours avoir un script qui gère la récupération indépendant que tu déclenches via une tâche Cron si tu peux y accéder ou encore en utilisant les services (gratuits) de webcron.org et dans ce cas, tu fais la mise à jour indépendamment des demandes des internautes, mais de préférence en heures creuses de fréquentation.

Et pour la récupération elle-même, PHP comprend un certain nombre de fonctions ftp qui te permettront d'effectuer la connexion nécessaire.