Fork me on GitHub

Rapport de message :*
 

Re: parser un fichier depuis un site externe

Titre du sujet : Re: parser un fichier depuis un site externe
par olivee sur 13/10/2012 21:10:33

Bonsoir
voilà je viens d'essayer pas mal de calss pour parser un xml. finalement j'ai décidé d'appliquer ce code
$aurls = array( "http://www.link1.com/rss" => 154,
"http://www.link2.com/10.xml" => 155,
"http://www.link3.com" => 156,
"http://www.link4.com" => 157,
 
"http://www.link5.com" => 162,
"http://www.link6.com" => 163,
"http://www.link8.com" => 164,
"http://www.link7.com" => 165,
 
"http://www.link9.com" => 166,
 
"http://www.link10.com" => 167,
"http://www.link11.com" => 168,
// "http://link12.com" => 169 );
$i=0;
$multiCurlcurl_multi_init(); 
foreach (
$aurls as $url => $v) {
 
$curls[$i] = curl_init();
 
curl_setopt($curls[$i], CURLOPT_URL$url);
 
curl_setopt($curls[$i], CURLOPT_HEADER0);
 
curl_setopt($curls[$i], CURLOPT_RETURNTRANSFERtrue);
 
curl_multi_add_handle($multiCurl,$curls[$i]);
 
$i+=1; } /*** Exécute le gestionnaire de connexion */ 
$running=null;
 do
 { 
curl_multi_exec($multiCurl,$running);
 } while (
$running 0);
 for(
$j=0$j<$i$j++){ $page[]=curl_multi_getcontent($curls[$j]); 
curl_multi_remove_handle($multiCurl$curls[$j]); 
$ok = new SimpleXMLElement$page[$j] ); 
foreach(
$ok->channel->item as $item){
 
$title $item->title;
 
$guid $item->guid;
 
$link $item->link;
 
$description1 $item->description;
 
$pubDate $item->pubDate;
 
$Date time();
 
$titleexist " SELECT lid FROM " $xoopsDB -> prefix'test_article_xml' ) . " WHERE link_articlexml = '" addslashes($link) . "'"$resultexist $xoopsDB->query($titleexist); $filecount $xoopsDB -> getRowsNum$resultexist );
 if (
$filecount == 0) { //fonction insert 
echo ' pas enregistre '; }
 if (
$filecount == 1) { //fonction ignorer
 
echo ' deja enregistre '; }
 if (
$filecount 1) { //fonction delete
 
echo ' deja enregistre plusieurs fois '; } 
} }
 
/*** Ferme les gestionnaires */
 
curl_multi_close($multiCurl);


ça me donne exactement se que je voulais mais ça prend trop de temps pour s’exécuter dans le mode debug ça me donne 0.12 ~~0.19 seconde pour chaque requête

$titleexist " SELECT lid FROM " $xoopsDB -> prefix'test_article_xml' ) . " WHERE link_articlexml = '" addslashes($link) . "'";
 
$resultexist $xoopsDB->query($titleexist);
 
$filecount $xoopsDB -> getRowsNum$resultexist );


c'est a dire en vérifiant si l'article est enregistré dans la base donnée ou pas. pour 50 item * 10 feed * 0.15 requête = 75 secondes. avec la méthode SELECT count(*) ça donne la même chose. j'ai mis une limite de 5 item donc le temps devient environ 6 ou 7 secondes c'est acceptable a mon avis.
bon maintenant il reste 2 choses a régler.
dans la fonction insert comment je peux insérer le key $v pour chaque url disons catégorie.
la requête a faire sur ma base de donnée pour obtenir un array sous forme de
$aurls = array( "http://www.link1.com/rss" => 154,
 
"http://www.link2.com/10.xml" => 155,
 
"http://www.link3.com" => 156,
 
"http://www.link4.com" => 157,
 
"http://www.link5.com" => 162,
 
"http://www.link6.com" => 163,
 
"http://www.link8.com" => 164,
 
"http://www.link7.com" => 165,
 
"http://www.link9.com" => 166,
 
"http://www.link10.com" => 167,
 
"http://www.link11.com" => 168,
 
// "http://link12.com" => 169 );


>>pour toute autre suggestion je suis preneur.
Merci
Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

31 Personne(s) en ligne (26 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 31 | Plus ...