Lecture Flux XML, Doublon et ressources SQL - PHP - Programmation
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.
Marsh Posté le 26-03-2015 à 11:40:12
Merci rufo
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é.
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) ?
Marsh Posté le 26-03-2015 à 01:29:17
Bonjour,
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 )
Alors selon-vous, solution 1 ou 2 ? ou autre ?
Merci
Message édité par tomware le 26-03-2015 à 02:01:48