Monthly Archives: septiembre, 2015

Cómo generar y descargar csv en PHP

Generar y descargar csv en PHP

En el día de hoy descubriremos una forma rápida y sencilla de generar y descargar un csv en php, sin necesidad de guardar el fichero en disco.

Muchas veces me ha ocurrido, que por necesidad de un cliente, se necesita descargar un fichero csv para obtener una serie de datos, como por ejemplo, descargar un fichero de información facturas en un rango de fechas en concreto, pero sin guardarlo en disco, ya que no es necesario guardar un histórico ni recuperarlo en otra ocasión, con lo que se ahorra espacio en disco.

Consideraciones previas

Partiendo de la base que debemos cargar todos el contenido directamente a la salida por pantalla, utilizaremos el wrapper output de php que utilizaremos como si fuésemos a escribir un fichero en disco.

Ejemplo de cómo generar y descargar csv en php

Partamos de que extraemos una serie de datos datos de usuarios a través de una query:

Teniendo ya cargada la información en un array, podemos proceder a devolverlo por pantalla

Si necesitáis ponerle cabeceras al fichero csv, no tenéis más que cargarlas en la primera posición del array.

Como resultado final, veremos que el navegador abrirá un dialogo de descarga del fichero, el cual contendrá el resultado del array con el formato del csv.Como habréis visto, generar y descargar csv en PHP, no es tan complicado, por lo que os animo a que lo utilicéis en vuestros desarrollos!

Fuente:

Imagen  de cabecera cortesía de Stuart Miles en FreeDigitalPhotos.net

1 Star2 Stars3 Stars4 Stars5 Stars (Sin puntuaciones)
Loading...

Aumentar el memory limit en PHP para Prestashop

Aumentar memory limit en PHP para Prestashop

Dependiendo de la configuración de los parámetros por defecto de nuestro hosting o servidor donde tenemos alojada nuestra tienda Prestashop, podemos obtener errores de configuración PHP. Uno de los errores más comunes que me encuentro, es el error PHP Fatal error: Allowed memory size of bytes exhausted. Este error esta causado por que la memoria asignada a la ejecución de cada página no es suficiente para poder ejecutar todo el contenido de la página, como por ejemplo, debido a la cantidad de módulos instalados en nuestra tienda.El parámetro de php que determina la cantidad de memoria es el memory_limit, veamos como podemos cambiar este valor.

Consideraciones previas

Este parámetro no se puede aumentar a lo loco, tened en cuenta que cuanta más memoria asignéis a este parámetro, menos peticiones podrá gestionar el servidor simultáneamente.Por ejemplo, si el servidor en el que esta alojada nuestra tienda tiene 1 GB de RAM, y le asignamos 512 MB de RAM al memory_limit, no podrá atender más de 2 peticiones simultáneas. No esta de más decir que también que debemos tener en cuenta el número de visitas que tenemos al día, ya que si tenemos 4 visitas diarias, podremos aumentar un poco más el memory limit en PHP para Prestashop que si tuviésemos 400 visitas diarias.

Comprobar el valor del parámetro memory limit

Para ver el valor del memory limit que tenemos en nuestra tienda, tendremos que subir un fichero de pruebas vía FTP que llamaremos por ejemplo, test.php a la raíz de nuestra tienda con el siguiente contenido:

Llamaremos a este fichero desde nuestro navegador, que en mi caso seria http://localhost/mitienda/test.php. Y buscamos el valor del parámetro memory_limit

Parámetro memory limit en phpinfo()

Parámetro memory limit en phpinfo()

Tened en cuenta que para comprobar que los cambios han funcionado en los puntos posteriores, deberemos actualizar para saber si han funcionado los cambios de valores.

Aumentar el memory limit en PHP para Prestashop desde ficheros htaccess

Para utilizar este método, debemos ir la raíz de nuestra tienda prestashop y editar el fichero .htaccess que encontraremos ahí, siempre evitando editar dentro de las líneas marcadas en el fichero de las cuales no debemos introducir código, ya que sino Prestashop las borraría en posteriores ejecuciones de la página.Veamos el código a insertar:

Los 128M, son a modo de ejemplo, poned un número acorde a las necesidades de vuestra tienda.

Por último, una vez guardado el fichero, comprobad  en el fichero test.php que hemos creado ver si cambia la cantidad el valor del parámetro.

Aumentar el memory limit en PHP para Prestashop desde el fichero php.ini

Para cambiar el valor del parámetro a través de este método, es necesario localizar la ubicación del fichero php.ini en vuestra instalación de PHP, puesto que en función del sistema operativo y de las configuraciones de PHP, dicha ubicación puede varios.Por ejemplo de mi instalación de Ubuntu, este fichero esta en /etc/php5/apache2 .En este caso,editad vuestro fichero como root (sudo), buscad en el fichero las siguientes líneas y cambiad el valor:

Tened en cuenta que no es necesario reiniciar vuestro servidor web para que los cambios del valor del parámetro surtan efecto.

Aumentar el memory limit en PHP para Prestashop desde el fichero config.inc.php

El último método que veremos hoy,  será el de hacerlo directamente desde los ficheros PHP de la instalación de Prestashop, con la función ini_set de PHP.Id a la raiz de vuestra tienda Prestashop ,editad el fichero ubicado en /config/config.inc.php, añadiendo la siguiente línea al principio del fichero, justo después de acuerdo de licencia de Prestashop:

Último recurso

Si ninguno de estos método os funciona y siguen sin reflejarse los cambios del parámetro en el fichero test.php que hemos creado,en caso de tener un hosting contratado, poneros en contacto con él, indicando que os aumente el memory limit de PHP.

1 Star2 Stars3 Stars4 Stars5 Stars (1 votos, media: 5,00 de 5)
Loading...

El patrón de diseño factory en PHP

Hay veces que en nuestro código, necesitamos condicionar la instancia de un objeto y otro en función de ciertos parámetros. El patrón de diseño factory en PHP resuelve este problema, abstrayendo a una clase, la responsabilidad de devolver las instancias de los objetos. Este patrón es un patrón de creación de objetos, además, cumple con el principio de inyección de dependencias incluido en los principios SOLID de la programación orientada a objetos

Consideraciones al crear el patrón de diseño factory en PHP

Para poder implementar este patrón en vuestros desarrollos, debéis tener en cuenta las siguientes consideraciones:

  • Las clases de las cuales querremos que la clase factory nos devuelva la instancia, deberán ser una implementación de una interface o una extensión de una clase abstracta, para que podamos llamar a los mismos métodos, sea cual sea la instancia que nos devuelva el objeto.
  • La clase factory que implementemos siempre deberá tener un método estático, que será al que llamaremos para devolver la instancia de la clase que nos interese.

El patrón de diseño factory en PHP en un ejemplo

Como todo se entiende mejor con un ejemplo, vamos a ver uno para que quede claro el patrón.Consideremos la siguiente interfaz y las siguientes clases que lo implementan:

Pongamos que queremos obtener una clase u otra en función del precio.Para conseguir instanciar las clases Coche, Moto y Bicicleta, utilizando el patrón de diseño factory, lo podríamos hacer de la siguiente forma:

A la hora de llamar a  la clase que implementa el patrón de diseño factory en PHP, la llamaríamos de la siguiente forma:

Conclusión

Basándome en mi experiencia, este patrón solo es aplicable en el caso de que vayamos a querer obtener una instancia más de una vez en nuestro código, ya que el tiempo para implementar este patrón, no se amortiza si solamente se necesita hacer una llamada a la clase factory.

Fuente: Wikipedia

1 Star2 Stars3 Stars4 Stars5 Stars (Sin puntuaciones)
Loading...

Copyright © 2017. Powered by WordPress & Romangie Theme.