Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Hadess_inf en 29 Octubre 2009, 15:06 pm



Título: Optimizacion de codigo PHP.
Publicado por: Hadess_inf en 29 Octubre 2009, 15:06 pm
En un articulo vi sobre como optimizar algo de codigo en php, vi algo parecido a esto, haber que opinan uds.... cual es la mejor forma de conectar a Mysql.

1)

Código
  1. $mysql = mysql_connect('localhost', 'reinhold', 'secret_hash');
  2. mysql_select_db('wordpress') or die("cannot select DB");

2)

Código
  1. $db_host = 'localhost';
  2. $db_user = 'reinhold';
  3. $db_password = 'secret_hash';
  4. $db_database = 'wordpress';
  5.  
  6. $mysql = mysql_connect($db_host, $db_user, $db_password);
  7. mysql_select_db($db_database);

3)
Código
  1. define('DB_HOST', 'localhost');
  2. define('DB_USER', 'reinhold');
  3. define('DB_PASSWORD', 'secret_hash');
  4. define('DB_DATABASE', 'wordpress');
  5.  
  6. $mysql = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
  7. mysql_select_db(DB_DATABASE);


Título: Re: Optimizacion de codigo PHP.
Publicado por: sirdarckcat en 29 Octubre 2009, 15:23 pm
el primero es mas seguro y mas optimo por varios microsegundos.

el tercero es mas conveniente porque si cambias los datos de sesion no tienes que buscar donde pusiste el mysql_connect.



Título: Re: Optimizacion de codigo PHP.
Publicado por: Hadess_inf en 29 Octubre 2009, 16:17 pm
Supongo que en la primera es cierto puesto que se ahorra tener que crear 4 variables en memoria. Pero si queremos que todo este bien estructurado y sabiendo que trabajaremos con clases y demas, cual seria la forma mas indicada de conectarse a una BD. ¿?


Título: Re: Optimizacion de codigo PHP.
Publicado por: :ohk<any> en 29 Octubre 2009, 16:43 pm
Pues la tercera opción me parece ideal.
Aunque hay que aclarar que optimizar código no necesariamente significa reducir lineas de código :P


Título: Re: Optimizacion de codigo PHP.
Publicado por: sirdarckcat en 30 Octubre 2009, 02:30 am
de hecho no es muy seguro usar ni la segunda ni la tercera.

la segunda no es seguro distribuirlo.. porque podria haber gente que tiene register_globals habilitado.
la tercera tampoco es seguro si pones los define en un archivo distinto a donde tienes el mysql_connect.. y si estan taaan cerca como en el ejemplo que tienes, es practicamente inutil hacerlo como en el ejemplo.

tendrias que checar si esta definido primero antes de hacer la conexion.

saludos


Título: Re: Optimizacion de codigo PHP.
Publicado por: WHK en 30 Octubre 2009, 03:33 am
Si es por optimizar debería quedar así:

Código
  1. if(mysql_connect('127.0.0.1', 'reinhold', 'secret_hash'))mysql_select_db($db_database);else die('Error en conexión');

Primero que nada me ahorro el espacio en memoria de las variables del handle con el link de la conexión, el string del host, nombre, etc, también pongo 127.0.0.1 para evitar que el sistema operativo tenga que traducir el dns a un host/ip y elimino las llaves y saltos de linea para ahorrar espacio en el script y ahorrarle memoria al sistema op cuando php intente cargar el archivo para procesarlo.

Pero es tan poca la diferencia del uso de memoria y proceso que es mas conveniente hacerlo como la segunda opción ya que puedes editar super fácil algún tipo de dato y puedes utilizar el mismo espacio en memoria de las variables para establecer una segunda conexión, en cambio si usas definiciones de constantes tendrías que duplicar la cantidad de constantes por cada nueva conexión.

Si fuera vulnerable por register_globals entonces casi todos los sistemas webs serían vulnerables.


Título: Re: Optimizacion de codigo PHP.
Publicado por: sirdarckcat en 30 Octubre 2009, 05:55 am
Citar
Si fuera vulnerable por register_globals entonces casi todos los sistemas webs serían vulnerables.
de hecho lo son xD, pero las constantes no usan memoria, son remplazadas antes de pasar a la VM de Zend.. es mas rapido.. pero igual no tan seguras como la primera.

*edit* ahora que lo pienso, lo de las constantes solo es cierto si usas el optimisador de zend..


Título: Re: Optimizacion de codigo PHP.
Publicado por: HardieVon en 31 Octubre 2009, 01:12 am
yo uso el último.
PD; escriban bien!