PDF de programación - optimizacion de aplicaciones php server side

Imágen de pdf optimizacion de aplicaciones php server side

optimizacion de aplicaciones php server sidegráfica de visualizaciones

Publicado el 5 de Febrero del 2017
1.105 visualizaciones desde el 5 de Febrero del 2017
291,7 KB
42 paginas
Creado hace 16a (24/02/2008)
Optmización de aplicaciones PHP

(server side)

por Oriol Jiménez

Optmización de aplicaciones PHP (server side)

¿Qué es?

sistema para que este sea más eficaz.

• Optimizar es el proceso de modificar un
• En aplicaciones web en concreto perseguimos
el objetivo de:
• Disminuir el consumo de recursos.
• Aumentar la velocidad de ejecución.

Optmización de aplicaciones PHP (server side)

"La Web no va!"

• Normalmente nadie se preocupa por el
rendimiento hasta que se convierte en un
problema, como por la seguridad.

• PHP es un lenguaje perfecto para montar
startups 2.0 en pocos minutos... pero ¿qué
pasa si estas startups acaban funcionando?

• Desarrollar sistemas eficientes debería ser una
premisa ante un desarrollo no una solución a
un problema.

Optmización de aplicaciones PHP (server side)

El lado del servidor

• Software servidor
• Sistemas de caché
• Optmizaciones de código (*)

Optmización de aplicaciones PHP (server side)

Software servidor

“Lo más simple posible”

Optmización de aplicaciones PHP (server side)

IPs en Allow y Deny.

Configuración Apache I/II
• Desactivar HostnameLookups y usar siempre
• Desactivar .htaccess con "AllowOverride
• Options FollowSymLinks.
• Usar un DirectoryIndex lo más corto posible
• Desactivar ExtendedStatus (mod_status).

None".

sin wildcards.

Optmización de aplicaciones PHP (server side)

Configuración Apache II/II

un timeout bajo (5 segundos).

• ¿Keepalive or not Keepalive? en todo caso con
• Desactivar los logs (mod_log_config) si no los

usamos, que se encargue el cliente (Google
Analytics).

• Desactivar todos los módulos que no usamos.

Optmización de aplicaciones PHP (server side)

Configuración PHP I/II

• Relacionadas con los recursos del sistema:
• max_execution_time
• max_input_time
• memory_limit
• output_buffering

Optmización de aplicaciones PHP (server side)

Configuración PHP II/II
• Para aumentar el rendimiento desactivar:
• register_globals
• magic_quotes_*
• expose_php
• register_argc_argv
• always_populate_raw_post_data
• Desactivar el log de errores en producción.

Optmización de aplicaciones PHP (server side)

Contenido estático I/II

• La combinación Apache+mod_php es una de

las mejores y más rápidas para servir
contenido dinámico.

• Para servir contenido estático existen otras
opciones mucho más ligeras:
• Lighhtpd, Boa, Tux, Thttpd, LiteSpeed, ...

Optmización de aplicaciones PHP (server side)

Contenido estático II/II

mismo los ganadores en velocidad.

• De todos ellos Tux y Lighttpd son ahora
• Lighttpd es la mejor opción por posibilidades

de configuración, portabilidad, etc. (incluso
para ejecutar PHP vía FastCGI).

• Aunque no se tengan varios servidores es una

opción igualmente recomendable.

Optmización de aplicaciones PHP (server side)

Separar el contenido I/II
• Usando directorios (/images, /css, etc.):
• Es lo más común y también lo más costoso
• Podemos hacerlo con mod_rewrite:

de separar.

RewriteRule ^/(.*\.(png|gif|jpg))

http://static/$1 [NC,P,L]

RewriteRule ^/(.*)

http://dynamic/$1 [P,L]

Optmización de aplicaciones PHP (server side)

Separar contenido II/II

• Usando subdominios:
• Lo más fácil y eficaz.
• Al subdominio se le asigna la IP del servidor
• Se puede usar un mismo servidor con varias

de contenido estático.

tarjetas de red o usando un firewall.

Optmización de aplicaciones PHP (server side)

Comprimir la salida

• Ventajas:
• Reduce el tráfico de red (ancho de banda).
• Reduce el tiempo de carga de la página para

los usuarios. La página se reduce hasta 8
veces.

• Desventajas:
• Aumenta el consumo de CPU dependiendo
del nivel de compresión. El nivel 1 ofrece 4X
y un consumo aceptable.

Optmización de aplicaciones PHP (server side)

¿Cómo comprimir?

• Usando el módulo mod_deflate del Apache:
AddOutputFilterByType DEFLATE text/
html text/plain text/xml

• Usando PHP:
• Vía PHP.ini:

zlib.output_compression=1

• Cambiando el handler del output buffer:

ob_start(‘ob_gzhandler’);

Optmización de aplicaciones PHP (server side)

Cambiar el sesión handler
• El manejador de sesiones de PHP por defecto
trabaja con disco. Alternativas más rápidas:
• RAM disk del SO.
• Memoria compartida:
• mm
• apc
• memcache

Optmización de aplicaciones PHP (server side)

Caché

"¿Porqué hacer lo mismo

más de una vez?"

Optmización de aplicaciones PHP (server side)

Concepto de caché

• Una caché son datos duplicados de otros
originales donde los datos originales son
costosos de acceder en tiempo y/o recursos.

• Las estrellas invitadas:
• APC
• Memcache
• Squid

Optmización de aplicaciones PHP (server side)

Usos de la caché

generarla.

• En el desarrollo en PHP normalmente nos
interesará guardar en la caché:
• Una página completa para no volver a
• Trozos estáticos de webs semi-dinámicas.
• Resultados de consultas a BBDD u otros
• El código ya compilado para no volver a

datos.

procesarlo. (*)

Optmización de aplicaciones PHP (server side)

¿Dónde guardar la caché?

• Bases de datos (BBDD)
• Disco duro (HD)
• Memoria compartida (SHM)

Optmización de aplicaciones PHP (server side)

Memoria compartida

• Memoria accesible por varios procesos

simultáneamente con el objetivo de
comunicarse.

• En nuestro caso permite que varios procesos

del Apache accedan a los mismos datos.

Optmización de aplicaciones PHP (server side)

Configurar la memoria
• Para usar correctamente la memoria
compartida necesitamos ajustar el SO:
• FreeBSD:

# sysctl kern.ipc.shmmax
# sysctl kern.ipc.shmall

• Linux:

# cat /proc/sys/kernel/shmmax
# cat /proc/sys/kernel/shmall

Optmización de aplicaciones PHP (server side)

APC

el código "compilado".

• Caché de opcode para PHP: No tener que
procesar el código PHP en cada petición:
• Ahorra accesos a disco al leer de memoria
• Ahorra la memoria usada en el procesado
• Reduce hasta un 400% el tiempo de
• Ofrece una API para trabajar con SHM.

del código.

respuesta.

Optmización de aplicaciones PHP (server side)

Configuración del APC I/II

• Activación de la extensión:

extension=apc.so

• Directivas destacables del APC:

apc.enabled=1
apc.shm_segments=1
apc.shm_size=128

Optmización de aplicaciones PHP (server side)

Configuración del APC II/II

• Para controlar que archivos guardamos

compilados:

apc.cache_by_default=On
apc.filters=""
apc.max_file_size=1M
apc.stat=1

Optmización de aplicaciones PHP (server side)

Usando la API de APC
• Guardar un dato:

apc_store('key',serialize($obj),
3600);

• Recuperar un dato:

$result = unserialize(apc_fetch
('key'));

• Borrar un dato:

apc_delete('key');

Optmización de aplicaciones PHP (server side)

Administrar APC I/II

• Tenemos algunas funciones para consultar
información del APC:
• apc_cache_info()
• acp_sma_info()
• También dispone de una fantástica

administración vía web

Optmización de aplicaciones PHP (server side)

Administrar APC II/II

Optmización de aplicaciones PHP (server side)

Memcached

memoria distribuida.

BBDD de LiveJournal.

• Es un sistema de caché de objetos en
• Pensado originalmente para reducir la carga de
• La cache es accesible desde distintos
• Sigue una estructura LRU con el añadido de
• (Opcional) Tugela: lo mismo pero contra disco.

tiempos de expiración.

servidores.

Optmización de aplicaciones PHP (server side)

Instalación de Memcached

• Iniciamos el servidor:

# memcached -d -m 512 -l 127.0.0.1
-p 11211 -u www

• Cargamos la extensión PECL:
extension=memcache.so

Optmización de aplicaciones PHP (server side)

Usando memcached I/II
• Conectarse al servidor de caché:

memcache = new Memcache;

$memcache->connect('localhost', 11211) or die
("No se pudo conectar");

• Guardar un objeto en la caché:

$memcache->set('key', $obj, false, 10) or die
("Fallo al guardar");

• Recuperar el objeto:

$result = $memcache->get('key');

Optmización de aplicaciones PHP (server side)

Usando memcached II/II

• Las keys como máximo son de 250 carácteres
y un dato guardado no puede ocupar más de 1
MB.

• Para distribuir la caché entre distintos

servidores se ha de implementar un sistema
propio.

Optmización de aplicaciones PHP (server side)

Caché de usuario

cliente

ningún tipo

• Ventajas:
• Reduce el tráfico de red. No se envía nada al
• No consume recursos de servidor de
• Reduce la latencia. El navegador responde
• La desventaja es que no la controlamos.

directamente

Optmización de aplicaciones PHP (server side)

Headers de caché

• Fijar el tiempo de caché deseado:
• HTTP 1.0

header('Expires: '.date());

• HTTP 1.1

hedaer('Cache-Control: max-
age=3600, must-revalidate');

Optmización de aplicaciones PHP (server side)

mismo contenido.

Caché web vía headers
• Utilizar URLs únicas. Una URL siempre sirve el
• Utilizar librerías comunes de imágenes, css, js,
• Minimizar el uso de SSL.
• Hacer fácilmente variables los enlaces a

etc.

elementos:

<script src="http://phpbsd.net/js/
func.js?v=123"></script>

Optmización de aplicaciones PHP (server side)

Acelerador web

siguiendo las headers HTTP.

• Se instalan delante de los servidores web.
• Cachean las peticiones de los usuarios
• Es una de las caches más cómodas para un
programador pero también muy peligrosa.
• Tenemos varias opciones: Squid, Apache,
• Squid es el más anciano y también el más

Lighttpd, Varnish.

usado (flickr, wikipedia, etc.).

Optmización de aplicaciones PHP (server side)

Caché con handler de 404
• Se trata de generar archivos .html bajo
demanda:
• En el HTML siempre enlazamos archivos
• El servidor web ha de ejecutar un script en
el caso de no encontrar un archivo (404).
• Ese script genera el contenido solicitado.
• Las siguientes peticiones accederán

con la extensión .html.

directamente al .html.

Optmización de aplicaciones PHP (server side)

Usar la caché con 404 I/II

• Configuramos el Apache:
ErrorDocument 404 genera_pagina.php
• Mantenimiento de la caché:
# find /web -mtime +1h -print0 | xargs
-0 rm -f

Optmización de aplicaciones PHP (server side)

Usar la
  • Links de descarga
http://lwp-l.com/pdf2296

Comentarios de: optimizacion de aplicaciones php server side (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad