Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Maurice_Lupin en 10 Agosto 2016, 03:02 am



Título: Consejos sobre mi sitio [F1]
Publicado por: Maurice_Lupin en 10 Agosto 2016, 03:02 am
Estoy creando un sitio con wordpress me ayuda con el registro de usuarios, y la personalizo con un plugin que voy creando (una clase en php), además utilizo la libreria fpdf para crear un reporte según las respuestas a un cuestionario.

Mis dudas:

- Sobre la creación del reporte en pdf, cuanto de texto es el limite para no saturar al hosting. Existe alguna alternativa para crear un documento localmente (con javascript)

- Al iniciar el cuestionario cargo todo mediante ajax, son varios combos por Area y Categoria (no queria hacer muchas consultas por eso lo almaceno en una variable). Cuanto seria el peso maximo de los datos que puedo almacenar en variables.


Tengo dudas pues estoy acostumbrado a programar para escritorio. Cualquier consejo o buenas practicas, se los agradeceria.

Muchas gracias.


Título: Re: Consejos sobre mi sitio [F1]
Publicado por: [u]nsigned en 10 Agosto 2016, 16:53 pm
- Sobre la creación del reporte en pdf, cuanto de texto es el limite para no saturar al hosting. Existe alguna alternativa para crear un documento localmente (con javascript)

Eso depende de tu tipo de hosting y del trafico de tu sitio. Por ejemplo el script que genera el PDF cuantas veces es invocado por hora normalmente? Y por otro lado que tipo de hosting tenes?Si es un shared basico, con 64MB es mas que suficiente, salvo que tengas muchas ejecuciones del script, en ese caso 32MB están bien.

Lo ideal es al principio del script que genera el PDF agregar la linea:
Código
  1. ini_set("memory_limit","64M");//64 MegaBytes

Claro que existen librerías para crear PDF con JS como https://parall.ax/products/jspdf el problema es que si el cliene tiene una pc vieja (512/1024 ram) se le va a colgar mal el navegador xD y con versiones desactualizadas de Firefox e IE no funciona del todo bien.

- Al iniciar el cuestionario cargo todo mediante ajax, son varios combos por Area y Categoria (no queria hacer muchas consultas por eso lo almaceno en una variable). Cuanto seria el peso maximo de los datos que puedo almacenar en variables

Si te referís al cliente, el limite es la memoria disponible que tenga la pc del navegador web xD. Pero seguramente te alcance de sobra para un cuestionario/formulario...

En el servidor el limite es el limite de memoria - memoria usada actualmente por el script. Te pongo un codigo de ejemplo, uso la funcion memory_get_usage() para saber cuanta memoria tengo en uso:

Código
  1. <?php
  2. ini_set("memory_limit","32M");
  3.  
  4. echo "Inicio. Meoria en uso: " . memory_get_usage() . " bytes.<br>";
  5.  
  6. echo "guardando algunas variables en memoria<br>";
  7.  
  8. $tags = array();
  9.  
  10. for($i=50000;$i>0;$i--)
  11. {
  12. $tags[] = array(
  13. "tag_uid" => '84fdds9f498sd4f98sd98fd',
  14.    "x" => 0,
  15.    "y" => 1
  16. );
  17. }
  18.  
  19. echo "usados " . memory_get_usage() . " bytes.<br>";
  20.  
  21. echo "guardando mas variables en memoria<br>";
  22.  
  23. $tags2 = array();
  24.  
  25. for($i=15000;$i>0;$i--)
  26. {
  27. $tags2[] = array(
  28. "tag_uid" => 'a4d4d9as4d9as1dsa16d51sa65d1sa65d1a6s51d65as1dsa65d6',
  29.    "x" => 0,
  30.    "y" => 1
  31. );
  32. }
  33.  
  34. echo "usados " . memory_get_usage() . " bytes.<br>";
  35.  
  36. ?>

Al ejecutarlo desde el navegador obtengo:

Citar
Inicio. Meoria en uso: 65400 bytes.
guardando algunas variables en memoria
usados 21128104 bytes.
guardando mas variables en memoria
usados 27913832 bytes.

Como ves al final del script tengo en us 27913832 bytes (26MB aprox.) Entones cambio la linea 1 a

Código
  1. <?php
  2. ini_set("memory_limit","25M");
  3.  

Y ahora obtengo:

Citar
Inicio. Meoria en uso: 65400 bytes.
guardando algunas variables en memoria
usados 21128104 bytes.
guardando mas variables en memoria

Fatal error: Allowed memory size of 26214400 bytes exhausted (tried to allocate 53 bytes) in C:\AppServ\www\poc.php on line 28

Como ves, me estoy pasando por 53 bytes, lo que da un error.

Espero haberte ayudado, saludos!


Título: Re: Consejos sobre mi sitio [F1]
Publicado por: Maurice_Lupin en 11 Agosto 2016, 17:34 pm
Gracias [u ]nsigned, me estoy decantando por la libreria jspdf, muy buena.
Sigo probando y posteare cualquier duda.

Saludos.


Título: Re: Consejos sobre mi sitio [F1]
Publicado por: Maurice_Lupin en 16 Agosto 2016, 20:06 pm
Hola, ahora tengo otra duda, para cargar el cuestionario hago consultas POST y envio la data en json, indagando en la web encontré esta recomendación "Minimiza el número de consultas a la base de datos", me pregunto si creo un archivo texto plano con la data json para cada cuestionario que tendré (imagino que serán menos de 50, pesarán menos de 30kb) y haría un require para enviar la data json.

¿Seria esto mejor que hacer consultas a la base de datos cada vez que se llame al cuestionario?

Saludos.


Título: Re: Consejos sobre mi sitio [F1]
Publicado por: [u]nsigned en 17 Agosto 2016, 14:38 pm
Eso es sobre la lógica de negocio de tu aplicación.

Si los datos que vas a leer son estáticos, simplemente guárdalos en una archivo .json, pero si son datos que pueden variar usa bases de datos. MySQL es muy poderoso y eficiente, y para suturarlo hacen falta cientos (o miles dependiendo de server) de consultas simultaneas para tirarlo.


Título: Re: Consejos sobre mi sitio [F1]
Publicado por: Maurice_Lupin en 19 Agosto 2016, 20:42 pm
Muchas gracias, doy por cerrado el tema.

Saludos.