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
laresistenciadelbit/bats

some of my scripts for dayly use

laresistenciadelbit/wp_githubin

wordpress plugin for embedding github content

laresistenciadelbit/beacon

android beacon position triangulation app

laresistenciadelbit/androidTabs

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

laresistenciadelbit/login_space

script for changing your login screen to last nasa uploaded picture

laresistenciadelbit/narpa

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

laresistenciadelbit/d2gls

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

laresistenciadelbit/wp_nasapic

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

laresistenciadelbit/starfield

draw a star field in js moving in the desired direction

laresistenciadelbit/drone

quadcopter made with arduino (arduino pro micro + modules)