Foros del Web » Programando para Internet » PHP »

optimizar tiempo de respuesta de un script hecho con php+ajax

Estas en el tema de optimizar tiempo de respuesta de un script hecho con php+ajax en el foro de PHP en Foros del Web. Hola a todos: En estos momentos he creado una clase extendida con la clase php_serial_class con el fin de poder simular una señal pulso (1 ...
  #1 (permalink)  
Antiguo 27/07/2012, 17:03
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
optimizar tiempo de respuesta de un script hecho con php+ajax

Hola a todos:

En estos momentos he creado una clase extendida con la clase php_serial_class con el fin de poder simular una señal pulso (1 y 0) y poder enviar estos datos a una tarjeta. Para poder refrescar esta función he utilizado una aplicación que encontre en internet para hacer un timer con ajax. La aplicación como tal funciona bien pero he tenido el problema que el tiempo de respuesta mas rapido que logro obtener es de 3 segundos, si trato de hacerlo en menos tiempo y basandome en las pruebas que he hecho no alcanza a cargar todo el contenido y por tanto no es capaz de escribir los datos en la tarjeta.

Existe alguna forma alternativa de poder lograr mejores tiempos sin ajax? Y en caso de que si se pueda hacer con ajax ¿Como puedo optimizar el codigo para lograr mejores tiempos? La idea que yo tengo es tener algo asi como las clases ya "precargadas" y que no se tuvieran que llamar cada vez que se llama a la función pero no se me ocurre como.

Dejo el codigo que uso para que se entienda un poco mas lo que estoy explicando. De antemano gracias por la colaboración que me puedan prestar.

Aquí incluyo el codigo de ajax, como ven es muy simple:

Código HTML:
<script language="javascript">
function nuevoAjax(){
var xmlhttp=false;
 try {
  xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
 } catch (e) {
  try {
   xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  } catch (E) {
   xmlhttp = false;
  }
 }

if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
  xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}

function time(){
		ajax=nuevoAjax();
		ajax.open("GET", "inc.class.motor.php",true);
		ajax.onreadystatechange=function() {
		if (ajax.readyState==4) {
		document.getElementById('echos').innerHTML = ajax.responseText
		}
		else{
		document.getElementById('echos').innerHTML = '<b>...</b>';
		}
		}
		ajax.send(null)
setTimeout('time();',3000);
	}
</script>
<body onLoad="setTimeout('time();',3000);">
<div id="echos"></div> 
Y aquí el php que genera el pulso de 1 y ceros hecho con php_serial
inc.class.motor.php
Código PHP:
include("php_serial.class.php");
class 
motor extends phpSerial{
var 
$sentido;//sentido en que ira el motor
//////////////////////////////////////////////////////////////////////////////////////////////
    
function ascii($dato){/*obtiene el valor ascii de un dato cualquiera*/    
        
return chr($dato);
        }
//////////////////////////////////////////////////////////////////////////////////////////////
    
function variables(){/*se definen las variables con las que se trabajaran para rotar el motor*/
        
define("DERECHA",$this->ascii(2));
        
define("IZQUIERDA",$this->ascii(1));
        
define("PARAR",$this->ascii(0));
        
$giro= array("derecha"=>DERECHA,"izquierda"=>IZQUIERDA,"parar"=>PARAR);
        return 
$giro;
        }
//////////////////////////////////////////////////////////////////////////////////////////////        
    
function sesiones(){/*define las variables de sesion que permitiran prender y apagar el motor*/
        
session_start();
        
session_register($prendido,$apagado,$intercalar);
        
$sentido=$this->giro();
        
$_SESSION["prendido"]=$sentido[0];
        
$_SESSION["apagado"]=$sentido[1];
        }
//////////////////////////////////////////////////////////////////////////////////////////////        
    
function derecha(){/*giro a la derecha*/
        
$arreglo=$this->variables();
        
$giro[]=$arreglo["derecha"];
        
$giro[]=$arreglo["parar"];
        return 
$giro;
        }
//////////////////////////////////////////////////////////////////////////////////////////////        
        
function izquierda(){/*giro a la izquierda*/
        
$arreglo=$this->variables();
        
$giro[]=$arreglo["izquierda"];
        
$giro[]=$arreglo["parar"];
        return 
$giro;
        }    
//////////////////////////////////////////////////////////////////////////////////////////////        
    
function giro(){/*escoge el sentido de giro del motor*/
        
if ($this->sentido=="izquierda"){
            
$sentido=$this->izquierda();
            }
        if     (
$this->sentido=="derecha"){
            
$sentido=$this->derecha();
            }
        return 
$sentido;                
    }
//////////////////////////////////////////////////////////////////////////////////////////////        
function intercalar($estado="0"){/*decide que valor se enviara para prender o apagar el motor*/
    
if ($estado==1){
        
$_SESSION["intercalar"]=1;
        }
    if (
$estado==0){
        
$_SESSION["intercalar"]=0;
        }    
    }
//////////////////////////////////////////////////////////////////////////////////////////////
}
$motor= new motor;
$motor->sentido="izquierda";//sentido del giro
$motor->sesiones();//inicio de variables de sesion
$motor->deviceSet("COM3");//puerto para escribir
$motor->confBaudRate(9600);
$motor->confParity("none");
$motor->confCharacterLength(8);
$motor->confStopBits(1);
$motor->confFlowControl("none");
$motor->deviceOpen();//abrir el puerto
if (isset($_SESSION["intercalar"])){//intercambiar variable de sesion entre 1 y 0
$estado=$_SESSION["intercalar"];
$motor->intercalar(!$estado);
}
else {
$motor->intercalar(0);    
    }
if (
$_SESSION["intercalar"]==1){
echo (
$_SESSION["intercalar"]);
echo (
$_SESSION["prendido"]);
$motor->sendMessage($_SESSION["prendido"],0.001);
}
if (
$_SESSION["intercalar"]==0){
echo (
$_SESSION["intercalar"]);
$motor->sendMessage($_SESSION["apagado"],0.001);
echo (
$_SESSION["apagar"]);
}
$motor->deviceClose();//cerrar puerto 
__________________
Blog de humor http://elcuasatar.net63.net/
  #2 (permalink)  
Antiguo 27/07/2012, 17:51
Avatar de ipraetoriux  
Fecha de Ingreso: abril-2010
Ubicación: ipraetoriux.com
Mensajes: 1.125
Antigüedad: 14 años
Puntos: 155
Respuesta: optimizar tiempo de respuesta de un script hecho con php+ajax

...pues para empezar, yo usaria Prototype...luego para que tienes el setTimeout?...no lo necesitas...depende del response que recibes luego de ejecutar el php efectuar una u otra accion...
  #3 (permalink)  
Antiguo 28/07/2012, 05:29
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
Respuesta: optimizar tiempo de respuesta de un script hecho con php+ajax

Cita:
...pues para empezar, yo usaria Prototype...luego para que tienes el setTimeout?...no lo necesitas...depende del response que recibes luego de ejecutar el php efectuar una u otra accion...
Ok lo explico rapidamente. Como necesitaba mandar dos señales (1 y 0) necesito que cada x segundos se intercambien estos valores y al buscar en google como crear un timer aparecio esta forma de hacerlo con ajax que me parecio buena, lo malo es que al tener que cargar tanto codigo le es imposible hacerlo mas rapido. Mientras no le de un boton de parada la señal periodica seguira indefinidamente, por eso lo diseñe así que fue lo primero que se me ocurrio.

Cita:
...pues para empezar, yo usaria Prototype.
¿Podrias ser un poco mas especifico? La verdad javascript no es mi fuerte aunque ya lo he usado mas seguido. He usado prototype pero no se en esto caso como me podria ayudar. Si me explicas o me muestras un blog donde lo usen tal como me lo planteas te lo agradeceria mucho.
__________________
Blog de humor http://elcuasatar.net63.net/

Etiquetas: hecho, html, respuesta, variables
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 22:06.