Foros del Web » Programando para Internet » PHP »

que tecnicas a conciderar para no sobrecargar el servidor?

Estas en el tema de que tecnicas a conciderar para no sobrecargar el servidor? en el foro de PHP en Foros del Web. hola maestros en los libros que tengo de php mencionan claramente como programar pero no me aclaran que tecnicas debo usar para no cargar demacioado ...
  #1 (permalink)  
Antiguo 11/05/2003, 23:49
Avatar de mveraa  
Fecha de Ingreso: diciembre-2002
Ubicación: santiago-chilito
Mensajes: 1.895
Antigüedad: 15 años
Puntos: 2
que tecnicas a conciderar para no sobrecargar el servidor?

hola maestros en los libros que tengo de php mencionan claramente como programar pero no me aclaran que tecnicas debo usar para no cargar demacioado mi servidor , o con la experiencia de uds. me orienten que no hacer para que mi pag. sea lo mas rapida posible...

un saludo , gracias...
  #2 (permalink)  
Antiguo 12/05/2003, 00:21
Avatar de drcyber  
Fecha de Ingreso: julio-2002
Mensajes: 826
Antigüedad: 15 años, 4 meses
Puntos: 2
Bueno, creo que es importante no sobrecargar la BD con repetidas consultas a la misma.

Trata de simplificar tu script para evitar llamar al señor MySQL con frecuencia.

Con respecto al server PHP, tratar de simplificar el algoritmo es muy importante; mientras más sencillo y corto sea, más eficiente será.

Muchos saludos !
__________________
Dr. Cyber
Ingeniarte.com
(soy el mismo Takitei)
  #3 (permalink)  
Antiguo 12/05/2003, 01:16
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si trabajas PHP para entorno "web" .. acuerdate de optimizar tu HTML/javascript que generes .. Ya sabes .. usar CSS en lugar de <font ..> .. etc ...etc (de esta parte el foro correspondiente te podrá orientar mejor ..)

El uso de "comillas" dobles o simples y concatenar es muy importante tambien si quieres optimizar tus aplicaciones. De eso personalmente hablé un poco en este mensaje:
http://www.forosdelweb.com/showthrea...hreadid=129816

Mirar siempre si hay alternativas mas simples a ciertas funciones .. ejemplos son: str_replace() en lugar de ereg_replace() si no se requieren de expresiones regulares .. (este suele ser un tema que por desconocimento suele pasar desapercibido pues en su base hacen lo mismo .. pero internamente PHP consume mas recursos usando la versión ereg_replace() ... )

Lo mismo .. (siguiendo el tema de expresiones regulares) .. la mayoría de "algoritmos" de tratamiento de cadenas (strings) puedes implementarlos a base de bucles y condicionales ... pero si estudias como usar correctamente expresiones regulares (esto no es tema de PHP .. PHP sólo te pone a tu disposición funciones para usarlas como erg(), preg_math_all() .. y afines ...) veras, que en un par de líneas lo tienes hecho y mas "óptimo" seguramente que la versión "clásica" a base de bucles y condicionales ...

Otro tema .. Funciones: .. si usas funciones .. pasar valores por referencia optimizaras los recursos (de memoria) .. pues no se le pasa el valor sino solo un "puntero" de la variable ...

Mas detalles: Hacer cosas como:
$variable=$_GET['algo'];
echo $variable;

Cuando se podría usar directamente:
echo $_GET['algo'];

Tambien ayuda a optimizar recursos. (y esto reconozco que yo por lo menos lo hago bastante .. un mal hábito que debo corregir .. )

Buscar funciones de PHP ya implementadas para alguna taréa .. Si encontramos una función X() que nos haga el trabajo .. siempre será mas optimo que nuestra própia lógica hecha "a mano" .. pues una función PHP "nativa" correo como tal en el "cuerpo" de PHP (del interprete) ...

Y .. bueno, cuanto mas conozcas como funciona PHP .. más y mejor optimizaras sus recursos. Todos estos detalles de como funciona alguna función o método de PHP lo puedes ver muy bien en el manual oficial de PHP de referencia, pues .. a veces los "libros" se entretienen mas en ejemplos de uso de tal o cual funcionalidad que en el aspecto técnico de la función.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 09/09/2003, 00:55
Avatar de futilidad  
Fecha de Ingreso: julio-2002
Mensajes: 388
Antigüedad: 15 años, 5 meses
Puntos: 0
Y sobre Php y MySQL

No se si esto se pueda tomar como una colaboración...

Si por ejemplo tuviesemos una tabla en una base de datos que incluyera campos como nombre, tel, direccion, etc.

Al realizar una busqueda de en una base de datos siempre consume menos recursos el buscar un identificador numerico
que toda una cadena de texto en la que se incluya un nombre completo con nombre y apellidos.

En este caso si tenemos un script siempre es mejor cuando se pueda asignar un identificador unico en relación con el campo de nombre.

De esta forma php y Mysql buscaran identificadores numericos que implican una mayor sencilles que cadenas de texto.

El caso es como señala cluoster, buscar los metodos mas sencillos
ya que implicaran menos consumo de recursos
  #5 (permalink)  
Antiguo 09/09/2003, 00:58
Avatar de futilidad  
Fecha de Ingreso: julio-2002
Mensajes: 388
Antigüedad: 15 años, 5 meses
Puntos: 0
Sería bueno que en las faqs del web se integren una lista de consejos para optimizar recursos en Php Y MySQL
  #6 (permalink)  
Antiguo 09/09/2003, 02:03
Avatar de davidMS  
Fecha de Ingreso: abril-2003
Ubicación: Chepe
Mensajes: 202
Antigüedad: 14 años, 7 meses
Puntos: 0
Cita:
Sería bueno que en las faqs del web se integren una lista de consejos para optimizar recursos en Php Y MySQL
Como un adicto a php (lo cual no significa que sea muy bueno en ello) e comprobado algo, php y mysql son como marido y mujer....
Son muchas las cosas que se pueden realizar con los 2, seria creo un poco dificil establecer un standar de mejor rendimiento, si nos ponemos a pensar, por el lado de php: cuantos querys?, tamaños de arreglos?..etc, y en mysql: cuando uso la union? es necesaria? o es mejor usar pivotes?, limites, clausulas... creo que son muchas cosas, a como dije antes, para llegar a standarizar un metodo de alta calidad en rendimiento.

El problema que noto aqui, es como en lo cotidiano, "las especialidades", al igual que un barrendero barre una calle en 3 minutos, el camion de la basura dura 3 min recogiendola, asi igual en el caso de php y mysql....

Pero me gusta la idea de el compañero, la verdad, para mi a sido un poco dificil standarizarlo, pero talvez, con opiniones de todos, podremos llevar a estos 2 a una luna de miel
  #7 (permalink)  
Antiguo 09/09/2003, 02:56
 
Fecha de Ingreso: julio-2002
Mensajes: 322
Antigüedad: 15 años, 4 meses
Puntos: 0
Bueno, yo creo que no por aumentar el rendimiento hay que olvidar la seguridad de las aplicaciones. Por ejemplo:

$variable=$_GET['algo'];
echo $variable;

¿y si por la URL no llega este algo que esperamos? Para mi seria mas correcto:

if (isset($_GET['algo']))
echo $_GET['algo']

en el caso de que 'algo' no lo necesitemos mas abajo, en cuyo caso caso seria conveniento almacenarlo en una variable.

Salu2

Ruben
http://www.losmejoresenlaces.com
  #8 (permalink)  
Antiguo 09/09/2003, 06:21
 
Fecha de Ingreso: agosto-2003
Mensajes: 102
Antigüedad: 14 años, 4 meses
Puntos: 0
lo de que poner comillas simples es mas optimizado que poner comillas dobles me ha picado mucho la curiosidad, asi que he hecho un pequeño script para averiguarlo, os lo pongo porque tambien puede servir a alguien en el futuro para poder elegir entre formas de programación distintas y ver cual es mas optima...

lo que hace basicamente el script es obtener el tiempo que se tarda en procesar un bucle, donde se puede poner el codigo que quieras y te hace medias del tiempo (por eso de que el tiempo de procesado de un script no siempre es igual y depende de muchos factores del servidor)... a parte se le puede configurar la cantidad de veces a repetir el bucle y la cantidad de veces a recargar la pagina... en general creo que cumple su mision, lo he comentado para que sea mas facil de entender a todos que hace cada parte

Código PHP:
<?php
// Inicializamos el buffer de salida, unicamente para controlar la 
// información que queremos mostrar
ob_start();

//Usa sesiones y aviso no tengo mucha idea de como van, de todas formas a mi me funciono...
session_start();

// Variables de configuracion, la primera cuantas veces se 
// repetira el bucle al cargarse la pagina, y cuantas veces se tiene 
// que cargar la pagina... en total se harian 2000x200 veces la 
// instruccion a analizar, un total de 400.000 suficiente como para 
// hacerse una buena media y una idea mas o menos exacta de 
// la diferencia de tiempos de procesado
$repetir_bucle 2000;
$recargar_pagina 200;

//Miramos si existen las variables de sesion
if($_SESSION['tiempo']){
// Si existen, condicionamos la parte que hara el bucle de recargar 
// la pagina cada vez, enviando la cabecera correspondiente: 
// pasados x segundos ira a la pagina correspondiente, se puede 
// sustituir el 1 por el numero de segundos a esperar... depende 
// en parte de lo que tarde en procesarse una sola vez nuestro bucle 
    
if($_SESSION['num'] < $recargar_pagina){
        
header("Refresh: 1 ;URL=".$_SERVER['PHP_SELF']."");
    }
}
else{
    
//Si no estan definidas las variables de sesion las creamos y las inicializamos a 0
    
session_register('tiempo'); 
    
session_register('num');
    
$_SESSION['tiempo'] = 0;
    
$_SESSION['num'] = 0;
}


//Calculamos el tiempo inicial antes de empezar el bucle
$tiempo_temporal     explode(' 'microtime());
$tiempo_inicio     $tiempo_temporal [1] + $tiempo_temporal [0];

//Aqui iria el bucle... por ejemplo en mi caso puse una vez esto:
//$variable = 'cadena de texto . ';
//for ($i=0; $i<$repetir_bucle; $i++){
//    echo "hola " . $variable;
//}
//y la siguiente vez esto:
//$variable = 'cadena de texto . ';
//for ($i=0; $i<$repetir_bucle; $i++){
//    echo 'hola ' . $variable;
//}
//Se puede poner el bucle que sea, todas esas dudas que salen
// mientras programas para saber que es mas optimo

$variable 'cadena de texto . ';
for (
$i=0$i<$repetir_bucle$i++){
    echo 
"hola " $variable;
}


//Aqui volvemos a obtener el tiempo despues de hacer el bucle
$tiempo_temporal explode(" "microtime());
$tiempo_final $tiempo_temporal[1] + $tiempo_temporal[0];

//Restamos los dos tiempos
$tprocesado = ($tiempo_final $tiempo_inicio);

//Le damos formato al tiempo
$tprocesado number_format($tprocesado10);

// Añadimos los nuevos valores a las variables de sesion
$_SESSION['tiempo'] += $tprocesado;
$_SESSION['num']++;

//Hacemos los calculos para obtener medias
$media_paginas number_format($_SESSION['tiempo']/$_SESSION['num'], 10);
$media_instruccion number_format($tprocesado/$repetir_bucle15);
$media_total_instruccion number_format($media_paginas/$repetir_bucle15);

// Descartamos lo que tenemos hasta ahora en el buffer de 
// salida, lo limpiamos, pues como mucho tendremos las salidas 
// que haya hecho el bucle, y no nos interesa de que se vean por 
// pantalla... 
ob_end_clean();


//Y finalmente mostramos el resultado por pantalla
echo '<html><head><title>Calculos sobre el tiempo de procesamiento en php</title></head><body>
<div style=\'font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 11px;\'>
<br /><br />Tiempo de carga total del bucle en esta pagina -> <b>'
.$tprocesado.'</b>
<br />Media del tiempo que se ha tardado en procesar una unica vez el codigo del bucle en esta pagina -> <b>'
.$media_instruccion.'</b>
<br /></br>Se han procesado <b>'
.$_SESSION['num'].'</b> páginas, con un tiempo total de <b>'$_SESSION['tiempo'].'</b>
<br />La media total de procesado de una sola pagina es -> <b>'
.$media_paginas.'</b>
<br /><br /><b><i> La media total del tiempo que se ha tardado en procesar una unica vez el codigo del bucle es 
<b>'
.$media_total_instruccion.'</b></div></body></html>'

//Liberamos el buffer 
ob_end_flush();

?>
bueno, solo decir que no vereis nunca por pantalla lo que hace el bucle, pues verlo 2000 veces no era muy comodo, asi que utilice el buffer para evitar que se muestre, aunque como veis se pueden poner echos igualmente y los calculos continuan siendo igualmente validos... bueno, espero que le sirva a alguien

Pd. por cierto, cluster tenia razón, segun el script es mucho mejor poner comillas simples que dobles, en el tiempo que se tarda de procesar una unica vez la instruccion no hay mucha diferencia, pero si hay bastantes, como suele ser normal, se nota

Última edición por Nark; 09/09/2003 a las 06:38
  #9 (permalink)  
Antiguo 09/09/2003, 06:46
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

1.- KISS (Keep It SImple, Stupid: Mantenlo simple, no seas estupido)

2.- Primero haz que funcione, luego que funcione bien y por ultimo que funcione rapido.

3.- Localiza los cuellos de botella antes de ponerte a optimizar codigo como loco (¿existe algun profiler para PHP).

4.- Normalmente la optimizacion del algoritmo implica una optimizacion mayor que la optimizacion del codigo.

5.- Utiliza cada cosa para lo que es. Ejemplos son lo comentado para erg_replace()/str_replace() y comillas simples vs comillas dobles.

Simplemente un para de pensamientos. Por supuesto, tener en cuenta lo dicho por el resto.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
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 23:29.