Foros del Web » Programando para Internet » PHP »

Contabilizar tiempo de ejecución

Estas en el tema de Contabilizar tiempo de ejecución en el foro de PHP en Foros del Web. Hola a todos, Gracias a este for he logrado generar un xml desde una tabla MySQl, pero ahora necesito contabilizar el tiempo que llevó este ...
  #1 (permalink)  
Antiguo 10/06/2010, 15:09
 
Fecha de Ingreso: mayo-2009
Mensajes: 68
Antigüedad: 15 años
Puntos: 0
Contabilizar tiempo de ejecución

Hola a todos,

Gracias a este for he logrado generar un xml desde una tabla MySQl, pero ahora necesito contabilizar el tiempo que llevó este proceso ya que será much la info me piden saber el tiempo...

Lo que necesito medir es lo siguiente:
Código PHP:
<?php
 
header
("Content-type: text/xml");
 
$host "localhost";
$user "root";
$pass "";
$database "basededatos";
 
$enlace mysql_connect($host$user$pass) or die("Error MySQL.");
mysql_select_db($database$enlace) or die("Error base de datos.");
 
$query "SELECT * FROM aaaamatricula ORDER BY id ASC";
$resultado mysql_query($query$enlace) or die("Sin resultados.");
 
$salida_xml "<membership>\n";
 
for(
$x $x mysql_num_rows($resultado) ; $x++){
    
$fila mysql_fetch_assoc($resultado);
    
$salida_xml .= "\t<sourcedid>\n";
        
$salida_xml .= "\t\t<source>Campus</source>\n";
        
$salida_xml .= "\t\t<id>" $fila['asignatura'] . "</id>\n";
    
$salida_xml .= "\t</sourcedid>\n";
    
$salida_xml .= "\t<member>\n";
        
$salida_xml .= "\t\t<sourcedid>\n";
        
$salida_xml .= "\t\t\t<source>Campus</source>\n";
        
$salida_xml .= "\t\t\t<id>" $fila['usuario'] . "</id>\n";
        
$salida_xml .= "\t\t</sourcedid>\n";
        
$salida_xml .= "\t\t<role roletype=" $fila['rol'] . ">\n";
        
$salida_xml .= "\t\t\t<status>" $fila['status'] . "</status>\n";
        
$salida_xml .= "\t\t\t<extension><cohort>" $fila['grupo'] . "</cohort></extension>\n";
        
$salida_xml .= "\t\t</role>\n";
    
$salida_xml .= "\t</member>\n";
        
// Corregiendo caracteres incorrectos, se quitaro los correctores, ver si hace falta
}
 
$salida_xml .= "</membership>";

  
$file=fopen("matriculador.xml","w+");
  
fwrite ($file,$salida_xml);
  
fclose($file);
 
?>

he encontrado algo pero no me funciona...
Puse esto al principio del codigo:
Código PHP:
    set_time_limit(0);
    
$starttime microtime(); 
y esto al final:
Código PHP:
    mtrace("Cron script completed correctly");

    
$difftime microtime_diff($starttimemicrotime());
    
mtrace("Execution took ".$difftime." seconds"); 

alguien me pude dar una mano ya que mi inexperiencia en php ha llegado al limite...

Desde ya muchas gracias!!!
  #2 (permalink)  
Antiguo 10/06/2010, 15:42
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Contabilizar tiempo de ejecución

Podrias ejecutar a ese script php en segundo plano con ajax o jQuery.
  #3 (permalink)  
Antiguo 10/06/2010, 15:57
 
Fecha de Ingreso: mayo-2009
Mensajes: 68
Antigüedad: 15 años
Puntos: 0
Respuesta: Contabilizar tiempo de ejecución

Gracias wiwi74, y como se podría hacer?

no se usar ajax o jQuery.
  #4 (permalink)  
Antiguo 10/06/2010, 16:08
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Contabilizar tiempo de ejecución

no, en realidad no es necesario Javascript, solo PHP... (:
Código PHP:
$start array_sum(explode(' 'microtime()));

// aca va todo el proceso...

$end array_sum(explode(' 'microtime()));
echo 
round($end $start), ' segs.'
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 10/06/2010, 16:30
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Contabilizar tiempo de ejecución

Una pequeña modificación a lo que creo pateketrueke, que está en lo correcto que no se requiere de javascript, esto hace lo mismo que lo que mencionó:
Código PHP:
Ver original
  1. $start = microtime(true);
  2.  
  3. // aca va todo el proceso...
  4.  
  5. $end = microtime(true);
  6. echo round($end - $start), ' segs.';
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #6 (permalink)  
Antiguo 10/06/2010, 16:46
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Contabilizar tiempo de ejecución

Si sigues los pasos no te sera muy dificil.
Por ahora solo es copiar y pegar

Crea los archivos por nombre:
y colocalos todos en el mismo directorio
Luego ingresa por principal.php


principal.php
Código PHP:

<script type="text/javascript" language="javascript" src="scriptAjax.js"></script>
<script type="text/javascript" language="javascript">
var count=0;
function mostrarContador(){
    //llama cada un milisegundo 1000 (o sea un segundo)
    TimeOut = setTimeout("mostrarContador()",1000);
    document.getElementById('muestraContador').innerHTML=count;
    count++;
}
</script>

<a href="#" onclick="llamarAjax(),mostrarContador()">Ejecutar script php y mostrar contador</a>

<div id="muestraContador"></div>
<div id="muestraContenido"></div> 

scriptAjax.js
Código PHP:

// JavaScript Document
// JavaScript Document
function getXMLHTTPRequest()
{
var 
req false;
try
  {
    
req = new XMLHttpRequest(); /* p.e. Firefox */
  
}
catch(
err1)
  {
  try
    {
     
req = new ActiveXObject("Msxml2.XMLHTTP");
  
/* algunas versiones IE */
    
}
  catch(
err2)
    {
    try
      {
       
req = new ActiveXObject("Microsoft.XMLHTTP");
  
/* algunas versiones IE */
      
}
      catch(
err3)
        {
         
req false;
        }
    }
  }
return 
req;
}

var 
miPeticion getXMLHTTPRequest();

function 
llamarAjax() {
    
var 
miAleatorio=parseInt(Math.random()*99999999);
var 
url "scriptPHP.php?myRand="+miAleatorio;
miPeticion.open("GET"urltrue);
miPeticion.onreadystatechange respuestaAjax;
miPeticion.send(null);

}

function 
respuestaAjax() {

//que aun no hay respuesta del servidor
if(miPeticion.readyState == 4) {

           if(
miPeticion.status == 200) {
        
            
            var 
result miPeticion.responseText;
            
            
            
document.getElementById('muestraContenido').innerHTML=result;
            
            
clearTimeout(TimeOut);
            
count=0;

    


} else {
alert("Ha ocurrido un error: " miPeticion.statusText);
}
} else {   
}
//END respuestaAjax() 

scriptPHP.php
Código PHP:

<?
//con sleep(6) el script demorara 6 segundos en ejecutarse
//es para simular el tiempo de espera
sleep(6);

echo 
"El script php ha terminado el proceso.";
?>
Esto te permitirar mostrar un pequeño contador mientras se ejecuta el script.
  #7 (permalink)  
Antiguo 10/06/2010, 16:50
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Contabilizar tiempo de ejecución

Bueno mientra armaba los scripts no me habia percatado de que ya te habian dado la respuesta.

Bueno, despues de todo, ...todo (valga la redundancia) se puede hacer de multiples maneras.

Saludos...!

Etiquetas: contabilizar
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 08:41.