Lecture Flux XML, Doublon et ressources SQL

Lecture Flux XML, Doublon et ressources SQL - PHP - Programmation

Marsh Posté le 26-03-2015 à 01:29:17    

Bonjour, :hello:  
 
J'aimerais publier sur mon site un flux xml existant en récupérant uniquement les titres d'articles via php.
 
Le flux xml contient déjà 1000 entrées dont chacune possède un ID.
 
Je lance une cron tous les jours pour récupérer les nouveaux titres d'articles. Donc tous les jours il va passer sur les 1000 entrées pour en récupérer  seulement 1 ou 2 nouvelle par jour.
 
Et c'est là où je me pose une question cruciale. Quel est le plus économique en ressource ?
 
1) Une boucle php dans le parser qui va faire un insert SQL a chaque ligne. Si l'ID existe deja, n’insère rien.
 
2) J'effectue en premier une requette SQL qui va lister tous les ID déjà rentrés dans la base. En mettant les résultat dans un tableau avec un séparateur {8,9,10,11,12,13,etc...}  
Et dans ma boucle du parser, je vais inserer uniquement les ID qui ne sont pas dans ce tableau. Sans faire de check mysql a chaque fois.
 
 
 
Voici mon code juste pour que vous voyez a partir de quoi je pars (je ne vous demande pas de coder a ma place hein  :lol: )

Code :
  1. <?php
  2. $fichier = "http://lesiteaparser.com/xml.php";
  3. $xml = simplexml_load_file($fichier);
  4. foreach($xml as $titre){
  5. echo $titre->titre.'<br>'; // On va pas se prendre la tête avec l'insertion, je vous montre juste ma boucle
  6. }
  7. ?>


 
 
Alors selon-vous, solution 1 ou 2 ? ou autre ?
 
Merci :jap:


Message édité par tomware le 26-03-2015 à 02:01:48
Reply

Marsh Posté le 26-03-2015 à 01:29:17   

Reply

Marsh Posté le 26-03-2015 à 10:35:19    

La 2ème solution me paraît pas mal. Ca limite le nb d'accès à la BD; par contre, elle sera sans doute plus consommatrice de mémoire vue que tu vas stocker dans un tableau tous les ID déjà présents.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 26-03-2015 à 11:40:12    

Merci rufo  :jap:  
 
A ton avis il faut combien d'ID pour que ca commence a saturer ?
 
je suis sur un mutualisé et mon hébergeur me dit que j'ai 1GO de mémoire dédié.


Message édité par tomware le 26-03-2015 à 11:59:49
Reply

Marsh Posté le 26-03-2015 à 14:05:03    

Si tu fais un Array avec que des entiers dedans, 2000-3000 ID, ça devrait passer sans pb.
 
Après, t'es sûr que t'as pas moyen d'identifier plus spécifiquement les 2-3 articles dans le XML qui manquent dans ta BD ? Genre, y'aurait pas une date/heure qui te permettrait de trouver les titres non traités (ex : si tu fais un traitement tous les jours à un heure donnée, par rapport à la date/heure courante, tu sais ceux qui n'ont pas encore été traités) ?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 26-03-2015 à 15:31:51    

excellent idée oui c'est faisable :)
 
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed