Comunidad de diseño web y desarrollo en internet online

lentitud en carga de datos o incompaibilidad?

Citar            
MensajeEscrito el 30 Abr 2005 09:27 pm
Alguien sabe cómo solucionar el conflicto?
Tengo un sitio en flash que conecta a través de php a una base de datos mysql. La conexión la realizo con la siguiente modalidad:

_global.c = new LoadVars();
_global.c.onLoad = function() {
...desgloso texto y recupero variables
};
c.sendAndLoad("lista.php?cual=1",c);

Con el flash player 6 andaba bien, pero con el 7 tengo el problema que no conecta en principio con el php.
Revisé el archivo php, y anda sin problemas, luego le agregué un revisador para que retroceda si no hay valor en las variables, pero se queda tildado por un minuto aproximadamente.
el primer caso se puede ver en http://www.aguilarinformatica.com.ar, el segundo en http://www.aguilarinformatica.com.ar/temporal.

Por último decidí publicarlo en MX 2004, pero tarda demasiado y cuando tiene que cargar imágenes demora 3 minutos, y esto en los archivos que me permite publicar, ya que la mitad me cierra el programa intentando problarlos.

Alguna sugerencia?

Gracias

Por Pato

1 de clabLevel



 

msie
Citar            
MensajeEscrito el 10 May 2005 10:54 pm
Finalmente encontré una pseudo solución al problema de interpretación del Flash Player 7.
Tras intentar de varias maneras, encontré que el problema radica en la conexión con archivos que tengal algún movimiento en servidor, llámese PHP, XML, ASP, etc.
La alternativa que encontré es conceptualmente la siguiente:

El objeto Flash lo contengo en un archivo PHP, el cual, al ejecutarse genera un archivo txt, que posteriormente será leido mediante ActionScript por el objeto LoadVars.load. Pero la cosa no es tan sencilla: Los archivos txt no contienen encabezado, por lo que no se les puede indicar que no se almacenen en Caché, por lo que hay que generar un nombre diferente a diario para que actualice el contenido de la base de datos.
En mi caso, utilicé la fecha para valerme de nombres nuevos para el archivo. Con PHP borro los anteriore, ordeno los datos y escribo el nuevo archivo cuyo nombre culmina con seis dígitos correspondientes a la fecha universal para evitar inconvenientes por los desfasajes horarios. A partir del Actionscript genero el número (que se hace en unos cuantos pasos y ¡OJO! getUTCMonth comienza en 0, por lo que hay que sumarle 1 para obtener el número de mes correcto.
Al pasar encontré otro bug, cuando se realiza la carga con esta metodología, una función que se encuentra dentro de un Clip, no puede recuperar las variables generadas con LoadVars, por lo tanto, dicha función, deberá llamar a otra función que esté en el nivel 0 que sí recupera las variables.
El principal problema de esto radica en que la computadoras con el reloj cambiado no podrán ver el contenido.

Para la práctica anoto aquí los elementos claves:

====script de PHP=====
// no olvidar incluir los encabezado que impidan el almacenamiento en Caché

include("funcion.php");
include("conexion.php");
$result=false;
$hoy = gmdate("ymd");

if(!file_exists("inicio/lista1_".$hoy.".txt")){ // si existe omito generarla de nuevo
$direc = dir_array("inicio"); // una función que hice para devolver el contenido del directorio en un matriz
for($ic=0;$ic<count($direc);$ic++){
if(substr($direc[$ic],0,5)=="lista"){unlink("inicio/".$direc[$ic]);}
};

$result2 = mysql_array("SELECT producto, precio, descripcion, imagen FROM producto");

$handle = fopen ("inicio/texto.txt", "r");
$texto = fread ($handle, filesize ("inicio/texto.txt")); // texto tomado de un archivo
fclose ($handle);
$texto = utf8_encode(url_flash($texto)); // url_flash es una función que convierte caracteres clave para evitar conflictos en actionscript

$prods = "";
$largo = count($result2);
for($ir=0;$ir<$largo;$ir++){
$prods .= url_flash($result2[$ir][0])."·".$result2[$ir][1]."·"
.url_flash($result2[$ir][2])."·".url_flash($result2[$ir][3]);
$prods .=($ir<($largo-1))?"¶":"";
}; //como se ve creo un texto con el que divido las celdas mediante · y los registros mediante ¶
$prods = utf8_encode($prods); // para pasar a flash 6, los caracteres extendidos deben mandarse codificados a Unicode, en Flash 7 esto no es necesario
$contenido = "texto=".$texto."&pr=".$prods;
$de_inicio = fopen("inicio/lista1_".$hoy.".txt", "w");
if(!fwrite($de_inicio,$contenido)){print "no se pudo guardar lista1";};
unset($result2,$contenido);

=====script an Actionscript=======
======= primer fotograma

_global.texto = "-";
_global.prp = "-"; // defino las variables como globales, CUIDADO de no usar las mismas si son varios archivos flash ejecutándose dentro de otro

definir_p = function() { // defino la función antes que llamar al archivo
prp = this["pr"].split("¶");
for(im=0;((im<prp.length)&&im<3);im++){ // compongo la matriz con los carateres de separación de registros y celdas
prp[im]= prp[im].split("·");
};
texto = this["texto"];
};

_global.c = new LoadVars();
c.onLoad = definir_p;

======== segundo fotograma
var fecha = new Date();
anio = (fecha.getUTCFullYear() + " ").substr(2,2)
mes = ("0"+(fecha.getUTCMonth()+1)); // ATENCIÓN en esta parte
if(mes.length>2){mes = mes.substr(1,2)};
dia = ("0"+fecha.getUTCDate());
if(dia.length>2){dia = dia.substr(1,2)};
hoy = anio + mes + dia

c.load("inicio/lista1_"+hoy+".txt"); // llamo al archivo


======== un fotograma más adelante
if(c.loaded){
// se hace necesario esto, ya que casi nunca carga en la primera, y no es una cuestión de espera, hay que reintentarlo
}else{
gotoAndPlay(2)
}


Espero que le sea útil a alguien esto.

Por Pato

1 de clabLevel



 

msie
Citar            
MensajeEscrito el 11 May 2005 01:39 am
emmm...probaste con un simple....?

obj.load("archivo.txt?"+new Date());

Por tangamampilia

.GAIA Developer

961 de clabLevel


6 articulos

Genero:Masculino   Anime Bloggers

México, D.F.

safari

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.