Simple sistema de administracion de portafolio (incasoft) by fede_cp

Iniciado por fede_cp, 19 Diciembre 2009, 20:31 PM

0 Miembros y 1 Visitante están viendo este tema.

fede_cp

somos lo que hacemos para cambiar lo que somos

http://elhackerblog.blogspot.com el blog de elhacker.net!!


^Tifa^

Ya que veo que la aplicacion es nueva, (poco codigo comparado a otros proyectos que uffff he visto) y hablan de optimizacion  :D  les dare una orejita. Tomen de costumbre utilizar la funcion  mysql_unbuffered _query() en vez de mysql_query  :D  la razon? bueno pueden investigar en Google, pero una resumida mas rapidita.

la libreria mysql que utiliza PHP para trabajar con el motor (Tambien aplica para las librerias mysql de Perl, python, etc) poseen un pequeno Buffer de almacenamiento, dicho Buffer existe para tomar todos, todos los registros sin excepcion y sean la cantidad que sean de una o mas tablas (Depende la consulta SQL que hayas definido en tu codigo) y guardarlos en el Buffer de la libreria mysql del lenguaje de programacion (No hablo del buffer del proceso o del motor de Mysql DB). Sino de la libreria (API) que estan usando para programar en PHP. Esta libreria tiene ese Buffer, y la cosa funciona mas o menos asi:

Supongamos que tienen una consulta en PHP tipo:

$consulta = SELECT * FROM tabla WHERE codigo = 1
mysql_query($consulta, $conexión)

Que hace realmente la linea anterior en el motor DB? pues nada si la tabla 'Ejemplo' tiene 5 mil registros en total, esos 5 mil registros primero bajan al motor y luego cargan al Buffer del (API) entonces una vez esos 5 mil registros existen en el Buffer del (API) entonces PHP procesa la consulta SQL en el Buffer de su (API)  no en el motor DB como tal, por ende esto es perdida de tiempo  :xD  (Cuando practiquen con optimizacion de codigo y base de datos 'Benchmark' y 'Profiling' se daran cuenta).

En vez de dar uso de la funcion mysql_query() y generar doble buffering como llamaria yo a este proceso (primero cargar todo al motor y luego pasarlo al buffer de la API... y no quiero imaginar si el motor tiene la Cache habilitada esto seria trillizos Buffering juas  :xD) utilizen la funcion mysql_unbuffered _query() asi obvian cargar en el buffer de la API todosssssss los registros y luego entonces procesar la consulta SQL sobre los datos existentes en ese buffer lol... es mejor trabajar directamente sobre el motor DB y obtener los resultados directamente desde el motor como tal  ;)

Es solo mi humilde opinion.

fede_cp

Tifa, te pasaste, la verdad gracias por dar tu opinion, porque a castg y a mi (fede_cp), la verdad que costo mucho laburo y buen, comentarios asi neccsitabamos, entonces veo que tengo que leer un manual de mysql y php ya intermedio-avanzado, para tener idea de las api, y de los buffers, que no tenia absolutamente idea.

si tenes algun manual un poco mas avanzado, por favor aca estamos esperando con tomi (nos juntamos para navidad jajaja).


Pd:¿te gusto el diseño?


saludos!
somos lo que hacemos para cambiar lo que somos

http://elhackerblog.blogspot.com el blog de elhacker.net!!

Servia

Cita de: ^TiFa^ en 25 Diciembre 2009, 05:35 AM
utilizen la funcion mysql_unbuffered _query() asi obvian cargar en el buffer de la API todosssssss los registros y luego entonces procesar la consulta SQL sobre los datos existentes en ese buffer lol...

Desconocia de su existencia xD

Y va una pregunta, porque entonces sigue existiendo el mysql_query, que utilidad tiene volcar los datos dos veces si con una ya vale?

No se si se me entinede y perdona fede por desviar, pero es algo nuevo para aprender y tengo curiosidad.

^Tifa^

Hola nuevamente.

Yo encantada con poder ayudar en lo poco que pueda, no soy programadora PHP ciertamente.

Servia

No te sorprendas de este hecho, no eres el unico... creeme de 10 programadores PHP si 2 saben de la existencia de estas funciones es mucho  :xD  lo que ocurre es que el programador generalmente no se lia con optimizacion de consultas o base de datos o del servidor en si, el solo quiere que su codigo sea funcional y entendible, lo cual es normal es un programador no un analista de optimizacion.

La razon por la cual existen 2 funciones (mysql_query & mysql_unbuffered_query) es que hay limitaciones y condiciones que te aportan mysql_query que mysql_unbuffered_query no, por eso dije indaguen via Google la funcionalidad y limitaciones de mysql_unbuffered_query, para que tengan una idea de cuando les conviene usarle y cuando no, aca pego una URL:

http://www.php-es.com/function.mysql-unbuffered-query.html

fede_cp

Lamentablemente poco te puedo ayudar con PHP, conozco un poco como funciona debido a que trabajo con PERL y MySQL y las API (los modulos) trabajan de manera similar sin importar el lenguaje en cuestion. No puedo en este subforo hacer una extension muy amplia de como funciona realmente MySQL en su parte interna, pero todo influye y si puedes ahorrarte un poco el consumo de memoria sea a traves del codigo, sea a traves del motor DB, hazlo. No todo es solamente 'No puedo cargar el motor DB' aveces cargamos cosas en la RAM y dicho cuello de botella viene por el codigo fuente y la libreria y no tanto del todo por el motor DB.

Hay una funcionalidad que utilizo mucho en PERL (aplicable en PHP y otros lenguajes) para medir y optimizar tu codigo en cuanto a consumo de CPU y memoria (Esto es indiferente al funcionamiento del motor DB) dicha tecnica se llama Benchmarking, para empezar te doy este link:

http://www.desarrolloweb.com/articulos/calcular-tempo-ejecucion-script.html

Pero a traves de Google encontraras muchos mas que te serviran de guia para medir la ejecuciones de tus aplicaciones en PHP   ;) 

Si quieres realizar lo mismo en el motor DB ya es otro asunto, pero te vale por el momento la respuesta de medir tu script.

Sobre el diseno de tu aplicacion, me gusta la pantalla de instalacion aunque a mi opinion personal se veria mas bonita si dicha pantalla ocupase el index completo (Lo mismo para las demas pantallas como Portafolio, despues de logeado, etc), y las ventanitas que piden la informacion estuviesen de manera alineadas (una bajo la otra). Es solo mi opinion que conste, si la consideras y decides ampliar la pantalla a modo completo, tambien deberias ampliar dichas ventanitas de solicitud de informacion para que no se vean pobres dentro de tanto espacio. Y ampliarlo no seria tan negativo  ;) te permitiria colocar botoncitos de Ayuda al lado de cada Entry (Para los usuarios que no sepan que informacion colocar en los Entry).




fede_cp

muchas gracias, voy a empezar a averiguar sobre todo esto, porque tengo pensado hacer una especie de "juego-navegaodor", en php y mysql y el uso de la memoria y el ahorro de la misma va a ser fundamental ya que las consultas tambien van a ser demciadas


saluydos!
somos lo que hacemos para cambiar lo que somos

http://elhackerblog.blogspot.com el blog de elhacker.net!!

Castg!

se te agradece mucho tifa, gracias por tu tiempo y atencion, nos servira mucho para la proxima version, vemos cuando empezamos a hacerla, porq yo ahora me meti en ASM y fede siguio por otro lado. jejej. un saludo grande y grac ias a todos!

Ari Slash

lo que mas me gusto fue algunos nombres de las variables   :xD

fede_cp

jajajajja, eso fue porque castg me apuro a postear y tenia que sacar todas esas cosas como Mi·erda, Por$·&%nga jaja


:¬¬


saludos
somos lo que hacemos para cambiar lo que somos

http://elhackerblog.blogspot.com el blog de elhacker.net!!