Foros del Web » Programando para Internet » PHP »

Enviar mensaje al navegador

Estas en el tema de Enviar mensaje al navegador en el foro de PHP en Foros del Web. Hola a tod@s: Hay alguna forma de enviar un texto al nevegador mientras se ejecuta el codigo?. Me explico tengo una "aplicacion" que estoy utilizando ...
  #1 (permalink)  
Antiguo 05/02/2005, 03:24
Avatar de Torus  
Fecha de Ingreso: enero-2002
Ubicación: Tú buscame y me encontraras
Mensajes: 413
Antigüedad: 22 años, 2 meses
Puntos: 0
Pregunta Enviar mensaje al navegador

Hola a tod@s:
Hay alguna forma de enviar un texto al nevegador mientras se ejecuta el codigo?.
Me explico tengo una "aplicacion" que estoy utilizando en localhost, esta aplicacion va llamando a funciones que realizan operaciones como renombrado de ficheros,creacion de carpetas,etc.
Lo que deseo es que cuando una funcion termine de realizar su trabajo envie al navegador un texto especifico, y no tener que esperar a que termine todo el proceso para ver dichos mensajes.
Gracas de antemano.
Un Saludo
__________________
Hay tanto que aprender y tan poco tiempo
  #2 (permalink)  
Antiguo 05/02/2005, 06:10
Avatar de H0m3r0J4y  
Fecha de Ingreso: abril-2002
Mensajes: 123
Antigüedad: 21 años, 10 meses
Puntos: 0
Esto que buscas no es posible y te explico el porque.

Cuando tu pides una pagina al servidor este te devuelve su codigo y el navegador lo procesa para que lo veas. Si la pagina es .php el servidor deriva el archivo al interprete PHP, este lo ejecuta y devuelve un HTML plano, que es lo que tu ves en pantalla; por eso es que tu ves los mensajes todos juntos.

Lo que quizas podrias hacer el usar mas de un frame y lanzar las consultas de forma simultanea, y mientras un frame procesa la info el otro podria tener un JS que mostrase mensajes, pero no serian reales. A menos que interactuases con un archivo de texto a modo de log, esto siempre que el proceso sea LARGOOOOO y se justifique, sino no te darias ni cuenta.

Salutes!
  #3 (permalink)  
Antiguo 07/02/2005, 08:55
Avatar de Torus  
Fecha de Ingreso: enero-2002
Ubicación: Tú buscame y me encontraras
Mensajes: 413
Antigüedad: 22 años, 2 meses
Puntos: 0
Gracias H0m3r0J4y por tu respuesta.
Me parece interesante el metodo del archivo de texto a modo de log, pero al ser una aplicacion el localhost y propia no me merece la pena.
Muchas gracias y saludos
__________________
Hay tanto que aprender y tan poco tiempo
  #4 (permalink)  
Antiguo 07/02/2005, 09:23
Avatar de e-miliox  
Fecha de Ingreso: noviembre-2002
Ubicación: San Antonio - Chile
Mensajes: 223
Antigüedad: 21 años, 4 meses
Puntos: 7
Hola:

La solucion de Javascript que proponen es bastante buena y da buenos tiempos de respuesta ejecutandose localmente. Tambien, si es un proceso muy largo y consume-recursos (osea se demora) podrias usar las funcoiines de Output Buffering, que te permiten acumular la salida del script en un buffer y "vomitarlo" a medida que se vaya ejecutando la pagina antes de que esta se ejecute por completo. Pero si esto es en Local no creo que haya mucha diferencia. De todas maneras es una idea:)

http://cl.php.net/manual/en/ref.outcontrol.php

Saludos
__________________
=PoWeReD By MySeLf!=
  #5 (permalink)  
Antiguo 08/02/2005, 09:23
Avatar de Torus  
Fecha de Ingreso: enero-2002
Ubicación: Tú buscame y me encontraras
Mensajes: 413
Antigüedad: 22 años, 2 meses
Puntos: 0
Hola e-miliox gracias por responder.
He hechado un vistazo al enlace que me diste y me parece muy interesanta pero...no se como utilizarlo
Las pruebas que he hecho son mas omenos como siguen.

Código PHP:
ob_start();

echo 
"<p align='left'><font color='#FF0000' size='3' face='Verdana, Arial, Helvetica, sans-serif'><strong>Comenzando 
  La Aplicación </strong></font> </p> <br>"
;

 print 
ob_get_contents() ;

   
ob_flush();


function 
crear_subdirec($direc){
if (
filetype($direc)=="dir"){
    
            
//no hace nada            
     
       
   
}else{
   
   
mkdir($direc,07777);
   echo 
"<div align='center'><font color='#0000FF' size='2' face='Verdana, Arial, Helvetica, sans-serif'>Se ha creado la carpeta pequenas en  ".$direc."</font> <br>";
   }


}
//fin de funcion crear_subdirec()

###funcion contador de ficheros para introducir en el texto
function contador_ficheros($directorio_files){

global 
$array_fichero;

if (
is_dir($directorio_files)) {
   if (
$conexion_cuenta_files opendir($directorio_files)) {
   
       while ((
$cuenta_ficheroreaddir($conexion_cuenta_files)) !== false) {
       
           if (
$cuenta_fichero != "." && $cuenta_fichero != "..") { 
           
                         if (
filetype($directorio_files.$cuenta_fichero)=="dir"){
                              
                                  
$array_directorio[]=$cuenta_fichero
Pongo parte del codigo para que te hagas una idea auque esta imcompleto.
Pero centrandonos en la primera linea ob_start(); me imagino que sera para que comienze a meter los datos al buffering (mi ingles no es nada bueno)
realizo un echo para un texto y seguidamente quiero que se imprima por lo cual print ob_get_contents() ; y vacio el buffer ob_flush();
Todo esto me da como resultado la salida por pantalla del mensaje dos veces y a la vez (cuando termina TODO el proceso).
¿Que estoy haciendo mal?
Saludos Cordiales
__________________
Hay tanto que aprender y tan poco tiempo
  #6 (permalink)  
Antiguo 08/02/2005, 10:07
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 21 años, 7 meses
Puntos: 8
Lo que pasa es que con print ob_get_contents() estas mandando el contenido del buffer, y despues son ob_flush() haces exactamente lo mismo que antes. O sea estas haciendo lo mismo 2 veces.

Otra posibilidad que tienes, antes de complicarte con buffers, es llamar a flush() al inicio del script. Esta funcion vomita (jejeje me gusto la palabra de e-miliox) cada instantaneamente (o x lo menos intenta)
http://ar2.php.net/flush
Tmb, en el php.ini hay una directiva que se llama implicit_flush que hace lo mismo. Podrias leerte esto...
http://ar2.php.net/outcontrol

Como veras, H0m3r0J4y lo que dices no es exactamente cierto.

Saluditos!
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 20:13.