Instalar Zend OPcache en CentOS

Actualizado el domingo, 5 noviembre, 2017

Instalar Zend OPcache en CentOS. Una duda que asalta a programadores noveles es si instalar Zend OPcache o Memcached. Grave creencia debido a su desconocimiento, pues no tiene nada que ver una cache con otra, lo aclaro:

  • Zend OPcache: Cachea el código, por tanto acelera su carga.
  • Memcached: Cachea los datos, por tanto libera de carga de trabajo las db.

Por tanto te recomiendo que instales los dos, son completamente diferentes e independientes (no te preocupes, no existe ningún tipo de incompatibilidad entre ellos).

Al instalar Zend OPcache se acelera la ejecución de PHP, por tanto se mejora el rendimiento del servidor y las aplicaciones de una manera excelente, incluso llegaríamos a decir que de manera increíble. Lo que realmente hace es almacenar los bytecode de scripts precompilados en la memoria compartida, de esa forma se reduce la lectura del mismo código repetidamente.

Instalar Zend OPcache en CentOS 1

Te parecerá increíble, pero en un blog WordPress con una media de 1200 visitas reales es fácil que tan solo el consumo del PHP se dispare hasta los 100mg, en el caso de la siguiente imagen el consumo era de 99,875,128 bytes. Basto con instalar Zend OPcache para reducir el consumo más del 50%.

Mira, mira ahora…Instalar Zend OPcache en CentOS 2

Sorprendente, verdad?. Pues venga procedemos a instalar y configurar correctamente Zend OPcache.

Instalar Zend OPcache en CentOS 3

 

Instalar Zend OPcache

Debes tener instalado y activado el repositorio Epel, si tienes dudas de como hacerlo revisa este post.

yum update
yum install epel-release

Ahora empieza lo bueno, sigue los pasos que te indico y revisa los ejemplos.

Primero buscamos el archivo zendcache, a ver de que versión disponemos.

yum search zendopcache

Ejemplo de salida:
[root@host ~]# yum search zendopcache
Complementos cargados:fastestmirror
Loading mirror speeds from cached hostfile
 * epel: fr.mirror.babylon.network
 * remi: fr.mirror.babylon.network
 * remi-php56: fr.mirror.babylon.network
 * remi-safe: fr.mirror.babylon.network
=========================== N/S matched: zendopcache ===========================
php-pecl-zendopcache.x86_64 : The Zend OPcache
php54-php-pecl-zendopcache.x86_64 : The Zend OPcache

Perfecto, todo es correcto… procedemos a instalar.
yum install php-pecl-zendopcache

Instalar Zend OPcache en CentOS 4

Como el servidor donde se instala Zend OPcache monta PHP 5.6.32 la instalación a concluido. Si quieres que de igual forma cachee PHP 7.0 o PHP 7.1, también instalaremos los siguientes paquetes.

El proceso es similar a lo que hicimos anteriormente:

PHP 7.0

yum search php70 | grep '^php70*'

yum install php70-php-opcache

PHP 7.1
yum search php71 | grep '^php71*'

yum install php71-php-opcache

Ahora y dado que dependiendo de tu sistema o panel de control, la situación de la extensión del modulo Zend OPcache puede variar, la buscamos con el siguiente comando (puede demorar unos segundos):
find / -type f -name 'opcache.so'

Ejemplo de salida:
[root@host ~]# find / -type f -name 'opcache.so'
/usr/lib64/php-zts/modules/opcache.so
/usr/lib64/php/modules/opcache.so

En nuestro caso la localización correcta es:
/usr/lib64/php/modules/opcache.so

— otro ejemplo de salida podría ser (solo es un ejemplo ajeno, no es nuestro caso):
/opt/remi/php70/root/usr/lib64/php/modules/opcache.so

Vemos que la extensión esta instalada correctamente, procedemos a configurar Zend OPcache.

Instalar Zend OPcache en CentOS 5

Los *.ini de las extensiones php (ojo, puede variar), normalmente los encontraras en:

/etc/php.d

Venga… configuramos.
nano /etc/php.d/opcache.ini

Debes leer las opciones con mucha atención, pues dependiendo de ellas el rendimiento será superior o inferior.

Un ejemplo «COMPLETO» de configuración de Zend OPcache (excelente para un VPS, puedes copiar y pegar, está completo), es el siguiente:

; Enable Zend OPcache extension module
zend_extension=opcache.so

; Determines if Zend OPCache is enabled
opcache.enable=1

; Determines if Zend OPCache is enabled for the CLI version of PHP
;opcache.enable_cli=0

; The OPcache shared memory storage size.
opcache.memory_consumption=128

; The amount of memory for interned strings in Mbytes.
opcache.interned_strings_buffer=8

; The maximum number of keys (scripts) in the OPcache hash table.
; Only numbers between 200 and 100000 are allowed.
opcache.max_accelerated_files=10000

; The maximum percentage of "wasted" memory until a restart is scheduled.
;opcache.max_wasted_percentage=5

; When this directive is enabled, the OPcache appends the current working
; directory to the script key, thus eliminating possible collisions between
; files with the same name (basename). Disabling the directive improves
; performance, but may break existing applications.
;opcache.use_cwd=1

; When disabled, you must reset the OPcache manually or restart the
; webserver for changes to the filesystem to take effect.
;opcache.validate_timestamps=1

; How often (in seconds) to check file timestamps for changes to the shared
; memory storage allocation. ("1" means validate once per second, but only
; once per request. "0" means always validate)
opcache.revalidate_freq=360

; Enables or disables file search in include_path optimization
;opcache.revalidate_path=0

; If disabled, all PHPDoc comments are dropped from the code to reduce the
; size of the optimized code.
;opcache.save_comments=1

; If disabled, PHPDoc comments are not loaded from SHM, so "Doc Comments"
; may be always stored (save_comments=1), but not loaded by applications
; that don't need them anyway.
;opcache.load_comments=1

; If enabled, a fast shutdown sequence is used for the accelerated code
opcache.fast_shutdown=1

; Allow file existence override (file_exists, etc.) performance feature.
;opcache.enable_file_override=0

; A bitmask, where each bit enables or disables the appropriate OPcache
; passes
;opcache.optimization_level=0xffffffff

;opcache.inherited_hack=1
;opcache.dups_fix=0

; The location of the OPcache blacklist file (wildcards allowed).
; Each OPcache blacklist file is a text file that holds the names of files
; that should not be accelerated.
opcache.blacklist_filename=/etc/php.d/opcache*.blacklist

; Allows exclusion of large files from being cached. By default all files
; are cached.
;opcache.max_file_size=0

; Check the cache checksum each N requests.
; The default value of "0" means that the checks are disabled.
;opcache.consistency_checks=0

; How long to wait (in seconds) for a scheduled restart to begin if the cache
; is not being accessed.
;opcache.force_restart_timeout=180

; OPcache error_log file name. Empty string assumes "stderr".
;opcache.error_log=

; All OPcache errors go to the Web server log.
; By default, only fatal errors (level 0) or errors (level 1) are logged.
; You can also enable warnings (level 2), info messages (level 3) or
; debug messages (level 4).
;opcache.log_verbosity_level=1

; Preferred Shared Memory back-end. Leave empty and let the system decide.
;opcache.preferred_memory_model=

; Protect the shared memory from unexpected writing during script execution.
; Useful for internal debugging only.
;opcache.protect_memory=0

; Validate cached file permissions.
; Leads OPcache to check file readability on each access to cached file.
; This directive should be enabled in shared hosting environment, when few
; users (PHP-FPM pools) reuse the common OPcache shared memory.
;opcache.validate_permission=0

; Prevent name collisions in chroot'ed environment.
; This directive prevents file name collisions in different "chroot"
; environments. It should be enabled for sites that may serve requests in
; different "chroot" environments.
;opcache.validate_root=0

Guardamos, reiniciamos y comprobamos que esta funcionando.
php -v

ejemplo de salida:
[root@host ~]# php -v
PHP 5.6.32 (cli) (built: Oct 25 2017 06:49:52) 
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

Perfecto, ya lo tenemos corriendo.

 

Instalar un panel de control

Uno muy bueno es el que creo rlerdorf.

Instalar Zend OPcache en CentOS 6

ES tan fácil de instalar como el acceder a: https://github.com/rlerdorf/opcache-status, descargar el archivo php y subirlo a tu servidor web. Se accede desde el propio navegador web.

Comprueba el rendimiento y consumo de tu web, sorprendido?. Como ves a resultado muy sencillo………

instalar Zend OPcache

Agregar comentario