optimización en php

Estaba haciendo un pequeño programa para extraer y almacenar datos de empresas hasta que me topé con el problema de la lentitud extrema: Cada pdf tardaba 18 segundos procesándolo.

Como eso era inviable para los más de 75000 documentos que quería procesar, (75000*18segundos = 375 horas) empezó mi tarea de la optimización.

Lo que se me ocurrió en primer lugar era que se quedase más tiempo atascado en una zona o hiciese algo fuera de lo común.

consejo 1: debuggear el programa mirando si se atasca en ciertas líneas

Para esto uso netbeans con su debugger, que me costó instalar, ya que debía tener una versión antigua del debugger en apache que no combinaba bien con netbeans.
Si tenéis algún problema a la hora de instalar el debugger de netbeans:
https://xdebug.org/wizard.php

En esa web le pegas toda la información de tu phpinfo() y te da los pasos exactos que tienes que hacer para instalarlo con la versión correcta.

Hecho esto, me di cuenta de que ese no era el problema de la lentitud.
Pero si es cierto que hay una parte del código que es donde más tiempo recorre, ya que es la parte del algoritmo principal.
Llegado a este punto:

consejo 2: sacar todo lo que se pueda de dentro de los bucles

Es algo bastante básico, pero cuando te enzarzas con un montón de bucles y te pierdes en un mar de código, se te olvida que algunas partes no son necesarias dentro de algunos de esos bucles.

Peeero… a pesar de que si que tenía alguna cosa innecesariamente dentro del bucle, eso no sumaba más de 0.3 segundos al tiempo total del algoritmo.

consejo 3: usar php 7 no 5

A lo mejor es una cosa obvia para alguien a quien le han enseñado, o para un experto en php, pero no para mí que he aprendido por mi cuenta,  y no uso solamente php.
Había leído que php7 era más rápido, pero ignoraba hasta que punto, o si realmente merecía la pena.

Y vaya que si; fue bajarme el ejecutable, probarlo en línea de comandos, y ver que tardaba 6 veces menos, es decir, 3 segundos frente a los 18 anteriores.

En cuanto a la optimización de cms’s usando php 7, también parece algo importante, de hecho las pruebas dan una velocidad en wordpress de aproximadamente el doble que con php5.

Pero por desgracia de momento no puedo cambiar el servidor a la versión 7, ya que cuelgan varias webs de él que no la soportan.

Deja un comentario

Tu dirección de correo electrónico no será publicada.

*

code

nasa pic of the day
  • wordpress plugin for embedding github content

  • (N)o (A)(R)(P) (A)ttacks

  • some of my scripts for dayly use

  • android beacon position triangulation app

  • example of dynamic scrolling tabs and dynamic sliding tabs for android studio

  • script for changing your login screen to last nasa uploaded picture

  • (D)iablo (2) (g)ame (l)ist (s)niffer

  • wordpress plugin for a widget with the last nasa uploaded picture.

  • draw a star field in js moving in the desired direction

  • quadcopter made with arduino (arduino pro micro + modules)

  • unsorted things