Foros del Web » Programando para Internet » PHP »

incoherencia en medicion de tiempo php, a que se debera?

Estas en el tema de incoherencia en medicion de tiempo php, a que se debera? en el foro de PHP en Foros del Web. miren en un sistema de comentarios cuando presiono el boton ver mas me carga 25 comentarios mas cada vez que mando llamar la funcion. @import ...
  #1 (permalink)  
Antiguo 10/10/2012, 10:12
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 11 años, 8 meses
Puntos: 52
incoherencia en medicion de tiempo php, a que se debera?

miren en un sistema de comentarios cuando presiono el boton ver mas me carga 25 comentarios mas cada vez que mando llamar la funcion.


Código Javascript:
Ver original
  1. $('#vermas').click(function(){
  2.  
  3. for(var i=0;i<=10;i++){
  4.  
  5.  Vermas("POST");//funcion que me carga 25 comentarios mediante ajax, llamando un archivo.php que me regresa el contenido ya con todo y divs.
  6.  
  7.  }

me marca error a la segunda vuelta..
osea para no andar convirtiendo en el php microsegundos y asi, lo mido con el cronometro de mi celular .
primera vuelta del ciclo(iniciando de cero) 12.68 segunda vuelta en el ciclo(volviendo a iniciar de cero= 18.01
total 30.69 segundos
osea y me sale el error

la cosa es que no debe salirme error por que por cada vuelta es una nueva peticion ajax.
no me explico por que sale como si ese ciclo fuera una sola peticion ajax.
si la funcion esa manda una peticion ajax. osea que cuando el ciclo vuelva a dar la vuelta es otra nueva peticion y es logico que a la vuelta ya termino de ejecutar el otro script, y obvio se que lo termino por que imprimio el contenido en pantalla ya..

dura tanto en imprimir 25 comentarios por que imprimo avatars, divs con css, el contenido, traduccion de urls, vistas miniatura de la primera url, descripcion titulo... y si es video , si es imagen imagen..
y todo eso.
a que creen que se deba?
Fatal error: Maximum execution time of 30 seconds exceeded in
no importa en que linea por que en cada vuelta me la muestra en diferentes.. cuando me sale el error..
  #2 (permalink)  
Antiguo 10/10/2012, 10:18
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 8 meses
Puntos: 194
Respuesta: incoherencia en medicion de tiempo php, a que se debera?

Si estas en un foro de php, y no pones ningun codigo php para evaluar, no hay mucho que podamos hacer
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #3 (permalink)  
Antiguo 10/10/2012, 10:26
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 11 años, 8 meses
Puntos: 52
Respuesta: incoherencia en medicion de tiempo php, a que se debera?

Cita:
Iniciado por h2swider Ver Mensaje
Si estas en un foro de php, y no pones ningun codigo php para evaluar, no hay mucho que podamos hacer

Disculpa como hago para moverlo a javascript?
  #4 (permalink)  
Antiguo 10/10/2012, 10:32
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: incoherencia en medicion de tiempo php, a que se debera?

Dos cosas: el problema puede estar en php, ya que es php el que agota su tiempo límite, pero no has puesto nada de php, es lo que te dice h2swider

Por otra parte, según veo, al hacer clic en el elemento "vermas" va a ejecutar 10 veces el llamado a Vermas("POST"); ¿es correcto? yo no lo creo, pero igualmente sin ver qué hace esa función, poco se puede hacer.
  #5 (permalink)  
Antiguo 10/10/2012, 10:50
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 11 años, 8 meses
Puntos: 52
Respuesta: incoherencia en medicion de tiempo php, a que se debera?

por favor esperen.....
  #6 (permalink)  
Antiguo 10/10/2012, 11:24
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 11 años, 8 meses
Puntos: 52
Respuesta: incoherencia en medicion de tiempo php, a que se debera?

Cita:
Iniciado por ocp001a Ver Mensaje
Dos cosas: el problema puede estar en php, ya que es php el que agota su tiempo límite, pero no has puesto nada de php, es lo que te dice h2swider

Por otra parte, según veo, al hacer clic en el elemento "vermas" va a ejecutar 10 veces el llamado a Vermas("POST"); ¿es correcto? yo no lo creo, pero igualmente sin ver qué hace esa función, poco se puede hacer.
disculpa por que no lo crees? efectivamente me lanza los primeros 25 comentarios y a la segunda vuelta si es que no excede los 30 segundos me lanza los otros 25, no lo dudes


lo que pasa es que el archivo que carga los comentarios no creo que sea necesaria ya que solamente carga los comentarios. con un while en una consulta sql..
y dura mas o dura menos dependiendo las urls que tenga en cada comentario.
yo estoy cociente que dure eso.
de lo que me parece ilogico es que el javascript tome la peticiones como una sola en cuanto a la ejecucion del script.
por eso creo que no serviria de nada poner el mundo de codigo de php que tengo para las validaciones y retornos.


aqui esta el que ejecuta la consulta

Código PHP:
Ver original
  1. <? session_start();?><title>publicar comentario</title><?
  2. require("../configuracion.php");
  3.  
  4. if(isset($_SESSION['usuario'])){
  5.     $tiempo_total=0;
  6.     require("divcomentarios.php");
  7.         //$sql="select avatar,nombre,apellido,comentario,murocomentarios.id as id from murocomentarios,usuarios where murocomentarios.idusuario=usuarios.id order by murocomentarios.id desc limit ".$_POST['vars'].",1";
  8.              $sql="select avatar,nombre,apellido,comentario,murocomentarios.id as id from murocomentarios,usuarios where murocomentarios.idusuario=usuarios.id order by murocomentarios.id desc limit ".$_SESSION['vermas'].",25";
  9. //echo $sql;
  10.        $_SESSION['vermas']+=25;
  11.       // $_SESSION['vermas']=$_POST['vars'];
  12.         $consultaC = mysql_query($sql) or die ("No se pudieron mostrar los comentarios");
  13.         $tiempo_inicio = microtime(true);
  14.              While ($registroC=mysql_fetch_assoc($consultaC)){
  15.            
  16.        
  17.        
  18.    
  19.              ?>
  20.              <div id=contenedor>
  21.            
  22.                 <div class=columnados> 
  23.                     <div class=columnaavatar>
  24.                         <img id=avatar src="<? echo $registroC['avatar']; ?>"  >
  25.                    </div>
  26.                     <div id=nombre>
  27.                         <? echo $registroC['nombre']." ".$registroC['apellido']." id= ".$registroC["id"]." y vermas= ".$_SESSION['vermas'];?>
  28.                     </div>
  29.                    
  30.                     <div id=coment>
  31.                    
  32.                          <?
  33.                          $tiempo_fin= microtime(true);
  34.                       $tiempo_total+=round($tiempo_fin - $tiempo_inicio,2);
  35.                       echo comentarios($registroC['comentario'],"hora",450,250,true)." tiempo total= ".$tiempo_total;// esta es la funcion que convierte urls caritas, muestra miniaturas y todo eso.. el problema no es alli. por que eso solo regresa una cadena de texto.
  36.  
  37.                          ?>
  38.          
  39.                        
  40.                        
  41.                     </div>
  42.                 </div>
  43.                
  44.             </div>
  45.             <?
  46.            
  47.              }
  48.                    
  49.         mysql_free_result($consultaC);
  50.  
  51.          mysql_close();
  52.            
  53.        
  54. }
y asi llamo esa funcion mediante ajax
Código Javascript:
Ver original
  1. $('#vermas').click(function(){
  2.  
  3.  for(var i=0;i<=10;i++){
  4.  
  5.  Vermas("POST");
  6.  
  7.  alert(i);
  8.  }
  9.  
  10. });

no pongo el codigo ajax, pues por que alli no es el problema pues esas mismas funciones las uso para otras secciones y no tienen problema.

les contare tambien que cada segundo ejecuto la verificacion de un archivo txt mediante ajax, para saber si ah cambiado, y si cambio hago una consulta a la base de datos para extraer los cambios y mostrarlos.

Fatal error: Maximum execution time of 30 seconds exceeded in C:\xampp\htdocs\p5\iniciarchat.php on line 3

iniciarchat.php

Código PHP:
Ver original
  1. <?
  2. $_SESSION['chat']="chat";
  3. ?>

ese iniciar chat no esta involucrado para nada en el boton vermas
ese lo uso en un require pero del otro archivo que se ejecuta cada 1 segundo para verificar...
pero cuando quito esa ejecucion de 1 segundo entonces me manda este nuevo error
Fatal error: Maximum execution time of 30 seconds exceeded in C:\xampp\htdocs\p5\Interaccion\Vermas.php on line 1
eh estado pensando

¿cuantas peticiones simultaneas soporta ajax?
y si no son simultaneas pone alguna en espera?
y si es asi, enonces la que se ejecuta cada segundo puede que este en espera y este detenida y es por eso que marca ese error?
lei por alli que habia limites de ejecuciones simultaneas...


esta es mi funcion javascript ajax Vermas("POST")

Código Javascript:
Ver original
  1. function Vermas(method,vars)
  2. {
  3. var respuesta;
  4. $('#cargandovermas').fadeIn();
  5. //$('#vermas').attr('disabled');
  6.      
  7.     var oAjaxV;
  8.         try{
  9.             oAjaxV=new XMLHttpRequest(); // Firefox, Opera 8.0+, Safari
  10.         }
  11.         catch (e){
  12.             try{
  13.                 oAjaxV=new ActiveXObject("Msxml2.XMLHTTP"); // Internet Explorer
  14.             }
  15.             catch (e){
  16.                 try{
  17.                     oAjaxV=new ActiveXObject("Microsoft.XMLHTTP");
  18.                 }
  19.                 catch (e){
  20.                     alert("Tu explorador no soporta AJAX.");
  21.                     return false;
  22.                 }
  23.             }
  24.         }
  25.  
  26. var URL="Interaccion/Vermas.php"
  27.  
  28.     if (method == "GET")
  29.       {
  30.         oAjaxV.open(method, URL+"?"+vars, true);
  31.         vars = "";
  32.         alert("get")
  33.       }
  34.       else
  35.       {
  36.    
  37.         oAjaxV.open(method, URL, true);
  38.          
  39.         //oAjax.setRequestHeader("Method", "POST "+URL+" HTTP/1.1");
  40.         oAjaxV.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  41.             //alert(method)
  42.       }
  43.       //oAjax.onreadystatechange = recibeDatos;
  44.  
  45.       oAjaxV.send("vars="+vars);
  46.      
  47.       oAjaxV.onreadystatechange=function(){
  48.             if(oAjaxV.readyState== 4 && oAjaxV.readyState != null){
  49.                 respuesta=oAjaxV.responseText;
  50.                 //alert(respuesta);
  51.                 $(respuesta).insertBefore('#contentevermas');
  52.                 alert("vermas");
  53.                 $('#cargandovermas').fadeOut();
  54.                 //$('#vermas').removeAttr('disabled');
  55.                 }
  56.             }
  57.      
  58. }


esta raro pero cuando ejecuto el ciclo del boton vermas
me imprime todos los alertas de la variable i, y al ultimo me va imprimiendo los alerts que estan dentro de la funcion Vermas("POST");
Se supone que debe ejecutar primero el del vermas luego el alert del ciclo luego de nuevo el vermas y luego el del ciclo, la verdad no comprendo, podrian orientarme?
de antemano gracias

Última edición por minombreesmm; 10/10/2012 a las 11:47
  #7 (permalink)  
Antiguo 10/10/2012, 12:33
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: incoherencia en medicion de tiempo php, a que se debera?

Cita:
disculpa por que no lo crees? efectivamente me lanza los primeros 25 comentarios y a la segunda vuelta si es que no excede los 30 segundos me lanza los otros 25, no lo dudes
No lo creo por que un botón ver mas debería llamar UNA vez a un proceso que traiga todos los datos que se le pidan, tu llamas al mismo proceso 10 veces seguidas. Desde luego yo hablo de formas "usuales", y sin ver tu código no podía adivinar. Y por lo que veo, tu código php te da 25 resultados. A menos que no esté revisando bien tu código, resulta que llamas 10 veces seguidas a la función que te da 25 resultados, leyendo por tanto 250 en cada llamada.

Si hablas de tiempos y segundas vueltas, es algo que no se podía ver en el primer código que pusiste.

No estoy seguro de si lo que quieres es algo que cada x segundos traiga información nueva de forma automática o bien que se haga manualmente mediante el botón de ver más.

Si ejecutas un proceso cada segundo, vas a saturar el sistema. Además, más que las peticiones que soporta ajax, es cosa de ver las peticiones que le encolas al servidor, ya que con php normalmente va procesar una petición y hasta que termine te va a procesar la siguiente, por la forma en que maneja las sesiones. Hay formas de hacer que php maneje las sesiones deforma diferente pata que atienda más peticiones simultáneas, pero no es muy recomendable.
  #8 (permalink)  
Antiguo 10/10/2012, 12:36
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 11 años, 8 meses
Puntos: 52
Respuesta: incoherencia en medicion de tiempo php, a que se debera?

Cita:
Iniciado por ocp001a Ver Mensaje
No lo creo por que un botón ver mas debería llamar UNA vez a un proceso que traiga todos los datos que se le pidan, tu llamas al mismo proceso 10 veces seguidas. Desde luego yo hablo de formas "usuales", y sin ver tu código no podía adivinar. Y por lo que veo, tu código php te da 25 resultados. A menos que no esté revisando bien tu código, resulta que llamas 10 veces seguidas a la función que te da 25 resultados, leyendo por tanto 250 en cada llamada.

Si hablas de tiempos y segundas vueltas, es algo que no se podía ver en el primer código que pusiste.

No estoy seguro de si lo que quieres es algo que cada x segundos traiga información nueva de forma automática o bien que se haga manualmente mediante el botón de ver más.

Si ejecutas un proceso cada segundo, vas a saturar el sistema. Además, más que las peticiones que soporta ajax, es cosa de ver las peticiones que le encolas al servidor, ya que con php normalmente va procesar una petición y hasta que termine te va a procesar la siguiente, por la forma en que maneja las sesiones. Hay formas de hacer que php maneje las sesiones deforma diferente pata que atienda más peticiones simultáneas, pero no es muy recomendable.
bueno mira


creo entender que ponga o no ponga el ciclo es lo mismo..
lo toma igual por que el javascript no lee la peticion ajax hasta que este lista, osea ya sea que el ciclo de todas las vueltas si esta condicion no se cumple dara las vueltas el ciclo pero la peticion ajax no entrara a esta condicion hasta que este lista
Código Javascript:
Ver original
  1. if(oAjaxV.readyState== 4 && oAjaxV.readyState != null)

hay alguna manera de sincronizar un ciclo con las peticiones?

lo de hacer el ciclo de una vez en vez de traer todos los datos es por que si traigo todos los datos tardara mas en regresar la respúesta(segun yo) de un solo jalon que de una por una..

y lo leer cada segundo..solo leo el cambio de una archivo que tiene una palabra de 8 caracteres, y si cambia consulto si no pues no.. entonces asi no se satura el mysql..
el archivo contiene la hora...

posdata ese ese todo el codigo
  #9 (permalink)  
Antiguo 10/10/2012, 12:39
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: incoherencia en medicion de tiempo php, a que se debera?

Yo no veo incoherencia en la medición de tiempo... de hecho, para saber cuánto tarda PHP en ejecutar un script o tarea, se debe hacer directamente en PHP, no con el móvil, ni con javascript, ni con el navegador, porque involucras otros factores que pueden afectar el tiempo que tarda en mostrarse todo en pantalla.

Ahora, esto de generar 10 peticiones AJAX en un ciclo, me parece que con unos cuantos usuarios vas a tener la capacidad de "tumbar" el servidor.
__________________
- León, Guanajuato
- GV-Foto
  #10 (permalink)  
Antiguo 10/10/2012, 12:41
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 11 años, 8 meses
Puntos: 52
Respuesta: incoherencia en medicion de tiempo php, a que se debera?

Cita:
Iniciado por Triby Ver Mensaje
Yo no veo incoherencia en la medición de tiempo... de hecho, para saber cuánto tarda PHP en ejecutar un script o tarea, se debe hacer directamente en PHP, no con el móvil, ni con javascript, ni con el navegador, porque involucras otros factores que pueden afectar el tiempo que tarda en mostrarse todo en pantalla.

Ahora, esto de generar 10 peticiones AJAX en un ciclo, me parece que con unos cuantos usuarios vas a tener la capacidad de "tumbar" el servidor.
Oks entonces descarto el ciclo y traigo los coments de un solo jalon...

Bueno cabe aclarar, que el boton vermas es para mostrar los comentarios viejos, y que al mismo tiempo consulto el archivo para ver si hay cambio y traer los mensajes nuevos, y que ademas al mismo tiempo yo puedo enviar comentarios.
todo eso mediante ajax.
Oo

no hay problema cuando envio 255 caracteres texto plano, pero cuando inserto urls de video, de paginas e imagenes.. como se hace conversion es cuando se hace lento..
pór cierto tampoco tengo problemas al traer 10 comentarios con el vermas..
solo dura 3 o 5 segundos.. en traer los 10
y lo hago en los 5 navegadores al mismo tiempo...
el detalle es que pasara cuando 100 usuarios hagan esa consulta al vermas y la consulta cada segundo al servidor por el archivo, y ademas el envio de datos..

ya seque hay problema cuando doy vermas y si envio un dato mientras carga... tambien creo que bloqueare el textarea de envio para que no se pueda enviar nada mientras se carga otra cosa..
ya bloquie el scroll barr por que tambien ese me carga lo del boton vermas..
vaya para que se den idea, es algo igual que twitter esa seccion del sitio que tengo...

mi pregunta es, estoy haciendo bien las cosas segun el codigo que expuse?

ese es todo el codigo para ver mas...
el de la funcion no tiene importancia solo regresa una cadena con todas las urls convertidas con str_repleace y todo eso.

Última edición por minombreesmm; 10/10/2012 a las 16:03

Etiquetas: medicion
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 17:55.