2010-06-21 2 views
0

J'essaie d'enregistrer 3 liens d'URL XML pour écrire dans une copie locale du cache XML. Mais 2 des liens d'URL XML avec des paramètres passés après? n'épargnez pas du tout?PHP CURL sauver plusieurs liens d'URL XML?

seul allteams.xml est enregistré dans le dossier multicache alors que les 2 autres ne sont pas sauvegardés?

il doit y avoir une meilleure façon de le faire?

<?php 

$urls=array(
'http://remotedomain.com/api/team.xml?id=12', 
'http://remotedomain.com/api/allteams.xml', 
'http://remotedomain.com/api/allmembers.xml?limit=1000&id=12'); 

$save_to='multicache/'; 

$mh = curl_multi_init(); 
foreach ($urls as $i => $url) { 
    $g=$save_to.basename($url); 
    if(!is_file($g)){ 
     $conn[$i]=curl_init($url); 
     $fp[$i]=fopen ($g, "w"); 
     curl_setopt ($conn[$i], CURLOPT_FILE, $fp[$i]); 
     curl_setopt ($conn[$i], CURLOPT_HEADER ,0); 
     curl_setopt($conn[$i],CURLOPT_CONNECTTIMEOUT,60); 
     curl_multi_add_handle ($mh,$conn[$i]); 
    } 
} 
do { 
    $n=curl_multi_exec($mh,$active); 
} 
while ($active); 
foreach ($urls as $i => $url) { 
    curl_multi_remove_handle($mh,$conn[$i]); 
    curl_close($conn[$i]); 
    fclose ($fp[$i]); 
} 
curl_multi_close($mh); 
?> 

grâce

Répondre

0

Hmm, que diriez-vous une solution low-tech:

foreach ($urls as $url) 
{ 
    copy($url, $save_to . basename($url)); 
} 

Pas boucle, juste quelques flux PHP de base.

Je ne suis pas sûr de ce is_file() affaires, si vous voulez vérifier que le fichier n'existe pas, utilisez file_exists().