Foros del Web » Programando para Internet » PHP »

actualizar archivo xml en IE

Estas en el tema de actualizar archivo xml en IE en el foro de PHP en Foros del Web. Hola, que todos tengan buen día, hoy posteo mi problema, a ver si alguien me puede ayudar, resulta que tengo un reproductor mp3 para la ...
  #1 (permalink)  
Antiguo 23/09/2008, 17:44
Avatar de argy  
Fecha de Ingreso: octubre-2007
Ubicación: Longitud 75º Latitud 18º Sur
Mensajes: 614
Antigüedad: 16 años, 5 meses
Puntos: 18
Mensaje actualizar archivo xml en IE

Hola, que todos tengan buen día, hoy posteo mi problema, a ver si alguien me puede ayudar, resulta que tengo un reproductor mp3 para la web, en donde tienes que configurar el xml, para que pueda reproducir las pistas, entonces como vi que por ejemplo si tienes 100 artistas o grupos, entonces tienes que configurar 100 archivos xml distintos o en el peor de loa casos 100 páginas, cosa que no me parece bien, al menos a mí, por lo que decidí crear una clase que me generara el archivo xml de acuerdo al artista que seleccione en el álbum (menú) de artistas o grupos. Pero resulta que tengo problema con el navegador IE que aunque genere el xml de acuerdo al artista que seleccione, sigue reproduciendo el artista con la que se cargo inicialmente, entonces viendo sobre ese tema vi que la caché de IE no actualiza el archivo, mientras el xml tenga el mismo nombre aún cuando el contenido sea diferente, cosa que no me ocurre con la caché de ópera, firefox, safari, Netscape, etc. que me actualiza (ya que el contenido del xml se actualiza para cada artista).
Esta es mi clase
Cita:

<?php
class Tracks
{
private $Artist;
private $List;
private $ Directory;
public function __construct($directory,$artist)
{
$this->Artist=$artist;
$this-> Directory =$directory;
}
private function set_GenerateList()
{
$artist=str_replace("_"," ",$this->Artist);
$artist=strtoupper($artist);
$this->List="<config>\n";
$this->List.="\t<auto_start>true</auto_start>\n";
$this->List.="\t<player_skin>./skin.swf</player_skin>\n";
$this->List.="\t<main_title>mi reproductor</main_title>\n";
$this->List.="\t<playlist_title>$artist</playlist_title>\n";
$this->List.="\t<title_text>DURACION</title_text>\n";
$this->List.="\t<pan_labels>I,D</pan_labels>\n";
$this->List.="\t<scroller_speed>3</scroller_speed>\n";
$this->List.="\t<scroller_marquee_content>#TRACK_NAME# </scroller_marquee_content>\n";
$this->List.="\t<repeat_is_enabled>false</repeat_is_enabled>\n";
$this->List.="\t<suffle_is_enabled>false</suffle_is_enabled>\n";
$this->List.="\t<default_volume>100</default_volume>\n";
$this->List.="\t<default_pan>0</default_pan>\n";
$this->List.="\t<play_list>\n";
if ($mus = opendir("$this-> Directory /$this->Artist"))
{
$i=1;
while (false !== ($tracks = readdir($mus)))
{
if($tracks!=="." && $tracks!=="..")
{
$track=substr($tracks,0,-4);
$this->List.="\t\t<item>$this-> Directory /$this->Artist/$tracks; $track</item>\n";
$i++;
}
}
closedir($mus);
}
else
{
$this->List.="\t\t<item>null;hubo problemas: las causas pueden ser</item>\n";
$this->List.="\t\t<item>null;grupo o artista no existe o</item>\n";
$this->List.="\t\t<item>null;no hay album de dicho grupo o artista </item>\n";
}
$this->List.="\t</play_list>\n";
$this->List.="</config>";
return $this->List;
}
public function write_Tracks($file_writable)
{
$list=$this->set_GenerateList();
$file_xml = "$this->Directory/$file_writable";
if(file_exists($file_xml))
{
if (is_writable($file_xml))
{
if (!$gestor = fopen($file_xml, 'w+'))
{
exit;
}
if (fwrite($gestor, $list) === false)
{
exit;
}
fclose($gestor);
}
else
{
throw new Exception("No se puede escribir en el archivo");
}
}
else
{
throw new Exception("No existe Archivo");
}
}
}
?>
Luego para la instanciación hago lo siguiente.
Cita:
<?php
include("libs/CLTracks.php");
if(isset($_GET['artist']))
{
$artist=strip_tags($_GET['artist']);
}
else
{
$artist="artista_por_defecto";
}
try
{
$List = new Tracks("carp_audios",$artist);
$List->write_Tracks("pistas.xml");
}
catch(Exception $e)
{
echo $e->getMessage();
}
include("themes/theme01.php");
?>
Espero que me den alguna ayuda o al menos una idea, también estaba pensando en hacer alguna clase que me borrara solo el archivo XML de la cache de IE, no sé si esa idea sea estrambótica o es posible hacerlo, ya que si lo elimino de su caché entonces obligatoriamente el IE tendría que preguntar al servidor si existe el archivo XML ( cosa que está ahí, actualizado de acuerdo al artista seleccionado”).

Última edición por argy; 23/09/2008 a las 18:05
  #2 (permalink)  
Antiguo 08/10/2008, 13:56
Avatar de betterman  
Fecha de Ingreso: octubre-2008
Mensajes: 5
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: actualizar archivo xml en IE

Q tal soy de Guayaquil ecuador y tengo el mismo problema que tu tienes.. Por favor si alguien sabe como resolver esto estaria muy agradecido
  #3 (permalink)  
Antiguo 08/10/2008, 18:48
Avatar de geq
geq
 
Fecha de Ingreso: agosto-2006
Ubicación: Rosario
Mensajes: 655
Antigüedad: 17 años, 8 meses
Puntos: 22
Respuesta: actualizar archivo xml en IE

No es problema de php, es un problema del IE que se soluciona con una cosa muy simple en el código de lo que sea que descargue el xml (javascript, flash, etc)

Lo que sucede es que el ie no actualiza el caché aunque el código ordene descargarlo nuevamente. Para solucionarlo simplemente cambiás la url, que podés hacerlo por ejemplo incluyendo la marca de tiempo (algo como mixml.php?t=new Date.getTime)

Saludos.
  #4 (permalink)  
Antiguo 09/10/2008, 04:43
 
Fecha de Ingreso: marzo-2005
Ubicación: Madrid
Mensajes: 233
Antigüedad: 19 años
Puntos: 5
Respuesta: actualizar archivo xml en IE

tb puedes usar las cabeceras de HTTP

Código:
header( "Expires: " . now() );
header( '"Last-Modified: " . now() . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
  #5 (permalink)  
Antiguo 09/10/2008, 10:22
Avatar de argy  
Fecha de Ingreso: octubre-2007
Ubicación: Longitud 75º Latitud 18º Sur
Mensajes: 614
Antigüedad: 16 años, 5 meses
Puntos: 18
Respuesta: actualizar archivo xml en IE

hola, gracias por sus respuestas, los probaré aunque eso de las cabeceras ya lo he probado y no me habia funcionado, lo otro que quiero decir es que ya lo habia dado una solucion y era que para cada artista se generaba un xml, claro la encargada de generar el xml es la clase de acuerdo al parametro(artista) que se le pase y sacando un promedio el xml generado tiene 5kb y suponiendo q tenga 1000 artistas tendria algo de 5mb de estos archivos, por lo cual tuve que agregarle un método que eliminara los archivos xml pasado un cierto tiempo en ese caso le dije cada 24 horas, esto con la finalidad de liberar espacio aunque 5mb no es de consideracion pero en el futuro puede que el xml crezca y por eso tome esa prevencion.

solo una última aclaración yo no dije que el php era el problema lo que dije es que si podria programar alguna clase que me posibilitara eliminar el xml de la cache de iE.

chau
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:31.