il codice per il proxy
usalo così:
- salvalo in un file php (ad esempio, proxy.php);
- metti il file sul tuo server, dove preferisci;
- crea allo stesso livello del file una cartella scrivibile dal php per salvare il file recuperato dal server remoto (nel mio codice, outfile);
- richiama il file tramite javascript puntando direttamente a tuopercorso/proxy.php
Codice PHP:
<?php
// setto il tipo di header per XML
$header = "Content-type: text/xml";
// url sorgente
$url = "http://www.emsc-csem.org/Earthquake/Map/earth/kml.php";
// nome della cartella (DEVE ESISTERE SUL SERVER E DEVE ESSERE SCRIVIBILE!)
$dir = "outfile/";
// parte fissa del nome del file
$file = "_file_out.txt";
// limite di tempo per il recupero di un nuovo file dal server remoto
$min_time = 2;
// compila il percorso del file
$file_out_name = $dir.time().$file;
// verifica se sono presenti file e conta quanti sono
$file_list = glob($dir ."*". $file);
$num_file = count($file_list);
// definisce le azioni da compiere
switch ($num_file) {
case 0:
// se non ci sono file, recupera il file, lo salva nella cartella e prepara il contenuto per
// restituirlo via XMLHttpRequest
$get_data = file_get_contents($url);
file_put_contents($file_out_name, $get_data);
break;
case 1:
// se trova un file, controlla se deve essere aggiornato
// prepare il nome del file (solo una comodità per le variabili)
$file_old_name = $file_list[0];
// ricava dal nome del file il timestamp dell'ultimo salvataggio
$time_old = explode("_", str_replace($dir, "", $file_old_name));
// calcola il tempo trascorso dall'ultimo salvataggio
$elaps = time() - $time_old[0];
if ($elaps >= $min_time) {
// se il tempo è inferiore al limite preimpostato, recupera il file dal server remoto e lo tiene in memoria
// restituirlo via XMLHttpRequest
$get_data = file_get_contents($url);
// cancella il vecchio file
unlink($file_old_name);
// salva il nuovo file recuperato
file_put_contents($file_out_name, $get_data);
}
else {
// se il tempo dall'ultimo salvataggio è inferiore al limite preimpostato, recupera il contenuto del vecchio file
// per restituirlo via XMLHttpRequest
$get_data = file_get_contents($file_old_name);
}
break;
default:
// se qualcosa non funziona, esce mostrando l'errore
echo "errore, verifica la cartella $dir: numero di file != da 1 o 0\n";
exit();
break;
}
// imposta l'header per i contenuti
header($header);
// restituisce i dati per la chiamata XMLHttpRequest
print($get_data);
?>