PHP 8.5.0 Alpha 1 available for testing

Configuración en tiempo de ejecución

El comportamiento de estas funciones se ve afectado por la configuración de php.ini.

Opciones de configuración de OPcache
Nombre Por defecto Cambiable Historial de cambios
opcache.enable 1 INI_ALL  
opcache.enable_cli 0 INI_SYSTEM Entre PHP 7.1.2 y 7.1.6 inclusive, el valor por omisión era 1
opcache.memory_consumption "128" INI_SYSTEM  
opcache.interned_strings_buffer "8" INI_SYSTEM  
opcache.max_accelerated_files "10000" INI_SYSTEM  
opcache.max_wasted_percentage "5" INI_SYSTEM  
opcache.use_cwd 1 INI_SYSTEM  
opcache.validate_timestamps 1 INI_ALL  
opcache.revalidate_freq "2" INI_ALL  
opcache.revalidate_path 0 INI_ALL  
opcache.save_comments 1 INI_SYSTEM  
opcache.fast_shutdown 0 INI_SYSTEM Eliminado en PHP 7.2.0.
opcache.enable_file_override 0 INI_SYSTEM  
opcache.optimization_level "0x7FFEBFFF" INI_SYSTEM Modificado desde 0x7FFFBFFF en PHP 7.3.0
opcache.inherited_hack 1 INI_SYSTEM Eliminado en PHP 7.3.0
opcache.dups_fix 0 INI_ALL  
opcache.blacklist_filename "" INI_SYSTEM  
opcache.max_file_size 0 INI_SYSTEM  
opcache.consistency_checks 0 INI_ALL >Desactivado a partir de PHP 8.1.18 y 8.2.5. Eliminado a partir de PHP 8.3.0.
opcache.force_restart_timeout "180" INI_SYSTEM  
opcache.error_log "" INI_SYSTEM  
opcache.log_verbosity_level 1 INI_SYSTEM  
opcache.record_warnings 0 INI_SYSTEM Disponible a partir de PHP 8.0.0.
opcache.preferred_memory_model "" INI_SYSTEM  
opcache.protect_memory 0 INI_SYSTEM  
opcache.mmap_base null INI_SYSTEM  
opcache.restrict_api "" INI_SYSTEM  
opcache.file_update_protection "2" INI_ALL  
opcache.huge_code_pages 0 INI_SYSTEM  
opcache.lockfile_path "/tmp" INI_SYSTEM  
opcache.opt_debug_level 0 INI_SYSTEM Disponible a partir de PHP 7.1.0
opcache.file_cache NULL INI_SYSTEM  
opcache.file_cache_only 0 INI_SYSTEM  
opcache.file_cache_consistency_checks 1 INI_SYSTEM  
opcache.file_cache_fallback 1 INI_SYSTEM Solo para Windows.
opcache.validate_permission 0 INI_SYSTEM Disponible a partir de PHP 7.0.14
opcache.validate_root 0 INI_SYSTEM Disponible a partir de PHP 7.0.14
opcache.preload "" INI_SYSTEM Disponible a partir de PHP 7.4.0
opcache.preload_user "" INI_SYSTEM Disponible a partir de PHP 7.4.0
opcache.cache_id "" INI_SYSTEM Solo para Windows. Disponible a partir de PHP 7.4.0
opcache.jit "tracing" INI_ALL Disponible a partir de PHP 8.0.0
opcache.jit_buffer_size 0 INI_SYSTEM Disponible a partir de PHP 8.0.0
opcache.jit_debug 0 INI_ALL Disponible a partir de PHP 8.0.0
opcache.jit_bisect_limit 0 INI_ALL Disponible a partir de PHP 8.0.0
opcache.jit_prof_threshold "0.005" INI_ALL Disponible a partir de PHP 8.0.0
opcache.jit_max_root_traces "1024" INI_SYSTEM Disponible a partir de PHP 8.0.0
opcache.jit_max_side_traces "128" INI_SYSTEM Disponible a partir de PHP 8.0.0
opcache.jit_max_exit_counters "8192" INI_SYSTEM Disponible a partir de PHP 8.0.0
opcache.jit_hot_loop "64" INI_SYSTEM Disponible a partir de PHP 8.0.0
opcache.jit_hot_func "127" INI_SYSTEM Disponible a partir de PHP 8.0.0
opcache.jit_hot_return "8" INI_SYSTEM Disponible a partir de PHP 8.0.0
opcache.jit_hot_side_exit "8" INI_SYSTEM Disponible a partir de PHP 8.0.0
opcache.jit_blacklist_root_trace "16" INI_ALL Disponible a partir de PHP 8.0.0
opcache.jit_blacklist_side_trace "8" INI_ALL Disponible a partir de PHP 8.0.0
opcache.jit_max_loop_unrolls "8" INI_ALL Disponible a partir de PHP 8.0.0
opcache.jit_max_recursive_calls "2" INI_ALL Disponible a partir de PHP 8.0.0
opcache.jit_max_recursive_returns "2" INI_ALL Disponible a partir de PHP 8.0.0
opcache.jit_max_polymorphic_calls "2" INI_ALL Disponible a partir de PHP 8.0.0
Para más detalles y definiciones de los modos de INI_*, vea Dónde una directiva de configuración puede ser modificada.

He aquí una breve explicación de las directivas de configuración.

opcache.enable bool

Activa el cache de opcode. Cuando está desactivado, el código no es ni optimizado, ni almacenado en caché. La configuración de opcache.enable no puede ser activada durante la ejecución mediante la función ini_set(), solo puede ser desactivada. Intentar activarla en un script generará una advertencia.

opcache.enable_cli bool

Activa el cache de opcode para la versión CLI de PHP.

opcache.memory_consumption int

El tamaño de la memoria compartida utilizada por OPcache, en megabytes. El valor mínimo permisible es "8", que se fuerza si se define un valor más pequeño.

opcache.interned_strings_buffer int

La cantidad de memoria utilizada para almacenar cadenas internas, en megabytes. El valor máximo es de 32767 en arquitecturas de 64 bits, y de 4095 en arquitecturas de 32 bits.

Nota: Antes de PHP 8.4.0, el valor máximo era de 4095 megabytes en todas las arquitecturas.

opcache.max_accelerated_files int

El número máximo de claves (y por lo tanto, de scripts) en la tabla de hash de OPcache. El valor actualmente utilizado será el primer número del conjunto de números primos { 223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987, 262237, 524521, 1048793 } que sea mayor o igual que el valor configurado. El valor mínimo es 200. El valor máximo es 100000 en PHP < 5.5.6, y 1000000 en versiones posteriores. Los valores fuera de este intervalo se ajustan al intervalo permitido.

opcache.max_wasted_percentage int

El porcentaje máximo de memoria desperdiciada permitido antes de que se programe un reinicio, si no hay suficiente memoria disponible. El valor máximo permisible es "50", que se fuerza si se define un valor más grande.

opcache.use_cwd bool

Si está activado, OPcache añade el directorio de trabajo actual a la clave del script, eliminando así posibles colisiones entre archivos con el mismo nombre base. Desactivar esta funcionalidad mejora el rendimiento, pero puede romper aplicaciones existentes.

opcache.validate_timestamps bool

Si está activado, OPcache verificará las actualizaciones de los scripts cada opcache.revalidate_freq segundos. Cuando esta directiva está desactivada, debe reinicializarse OPcache manualmente mediante la función opcache_reset(), la función opcache_invalidate() o reiniciando el servidor web para que los cambios en el sistema de archivos surtan efecto.

Nota: OPcache puede validar siempre el timestamp de un archivo durante la compilación si las opciones opcache.file_update_protection o opcache.max_file_size están definidas en valores no nulos.

opcache.revalidate_freq int

La frecuencia de verificación del timestamp del script para detectar posibles actualizaciones, en segundos. El valor 0 hará que OPcache verifique las actualizaciones en cada petición.

Esta directiva de configuración se ignora si opcache.validate_timestamps está desactivado.

opcache.revalidate_path bool

Si está desactivado, los archivos en caché existentes que usan el mismo include_path serán reutilizados. También, si un archivo con el mismo nombre está en otro lugar en el include_path, no será encontrado.

opcache.save_comments bool

Si está desactivado, todos los comentarios de documentación serán eliminados del cache de opcode para reducir el tamaño del código optimizado. La desactivación de esta directiva puede romper aplicaciones y frameworks que dependen del análisis de comentarios para anotaciones, como Doctrine, Zend Framework 2 y PHPUnit.

opcache.fast_shutdown bool

Si está activado, se utilizará una secuencia de cierre rápida, que no libera cada bloque asignado, sino que se basa en el gestor de memoria del Zend Engine para desasignar el conjunto entero de variables de la petición, en masa.

Esta directiva fue eliminada en PHP 7.2.0. Una variante de la secuencia de cierre rápido fue integrada en PHP y será utilizada automáticamente si es posible.

opcache.enable_file_override bool

Cuando está activado, el cache de opcode será verificado para saber si un archivo ya ha sido almacenado en caché cuando se llaman a las funciones file_exists(), is_file() y is_readable(). Esto puede aumentar el rendimiento de las aplicaciones que verifican la existencia y la legibilidad de los scripts PHP, pero puede devolver datos obsoletos si opcache.validate_timestamps está desactivado.

opcache.optimization_level int

El valor por omisión consiste en aplicar todas las optimizaciones seguras. Cambiar el valor por omisión es principalmente útil para depurar/desarrollar el optimizador (ver también opcache.opt_debug_level).

opcache.inherited_hack bool

Esta directiva de configuración se ignora.

opcache.dups_fix bool

Este hack solo debe ser activado como solución de contorno para errores "Cannot redeclare class".

opcache.blacklist_filename string

La ubicación de almacenamiento del archivo que gestiona la lista negra de OPcache. Un archivo de lista negra es un archivo de texto que contiene nombres de archivos que no deben ser acelerados; uno por línea. Se permiten comodines, y también se pueden proporcionar prefijos. Las líneas que comienzan con punto y coma se consideran comentarios y serán ignoradas.

Un archivo de lista negra simple se ve así:

; Coincide con un archivo específico.
/var/www/broken.php
; Un prefijo que coincide con todos los archivos que comienzan con x.
/var/www/x
; Una coincidencia con comodín.
/var/www/*-broken.php
opcache.max_file_size int

El tamaño máximo del archivo que puede ser almacenado en caché, en bytes. Si es 0, todos los archivos podrán ser almacenados en caché.

opcache.consistency_checks int

Si es diferente de cero, OPcache verificará la suma de comprobación del caché cada N peticiones, donde N es el valor de esta directiva de configuración. Esto solo debe ser activado durante el depurado, sabiendo que afecta significativamente al rendimiento.

Nota:

Desactivado a partir de PHP 8.1.18 y 8.2.5. Eliminado a partir de PHP 8.3.0.

opcache.force_restart_timeout int

La duración de espera para el inicio de un reinicio programado, si el caché no está activado, en segundos. Si este tiempo de espera se alcanza, entonces OPcache asume que algo está mal, y matará los procesos que gestionan los bloqueos en el caché para permitir un reinicio.

Si opcache.log_verbosity_level es 2 o más, se registrará una advertencia en el registro de errores cuando ocurra este comportamiento.

Esta directiva no es soportada en Windows.

opcache.error_log string

El registro de errores para errores de OPcache. Una cadena vacía será vista como stderr, y los errores serán enviados a la salida estándar de errores (que será el registro de errores del servidor web en la mayoría de los casos).

opcache.log_verbosity_level int

El nivel de verbosidad de los registros. Por omisión, solo los errores fatales (nivel 0) y los errores (nivel 1) serán registrados. Los otros niveles disponibles son las alertas (nivel 2), los mensajes informativos (nivel 3), y los mensajes de depuración (nivel 4).

opcache.record_warnings bool

Si esta opción está activada, OPcache registrará los avisos de compilación y los reproducirá en el próximo include, incluso si se sirve desde el caché.

opcache.preferred_memory_model string

El modelo de memoria preferido para OPcache, a utilizar. Si se deja vacío, OPcache elegirá el modelo más apropiado, que es la mejor forma de hacerlo en la mayoría de los casos.

Los valores posibles son mmap, shm, posix y win32.

opcache.protect_memory bool

Protege la memoria compartida de escrituras no autorizadas durante la ejecución de los scripts. Esto solo es útil para el depurado interno.

opcache.mmap_base string

La base utilizada para los segmentos de memoria compartida en Windows. Todos los procesos PHP deben enlazar la memoria compartida en el mismo espacio de direcciones. El uso de esta directiva permite corregir los errores "Unable to reattach to base address".

opcache.restrict_api string

Permite la llamada a las funciones de la API de OPcache solo desde scripts PHP cuyo camino comienza con una cadena específica. El valor por omisión, "", significa "sin restricciones".

opcache.file_update_protection string

Impide el almacenamiento en caché de archivos que datan menos que este número de segundos. Esto protege del almacenamiento en caché de archivos actualizados incompletamente. Si todas las actualizaciones de archivos son atómicas, el rendimiento puede ser aumentado definiéndolo a 0. Esto permitirá almacenar en caché los archivos inmediatamente.

opcache.huge_code_pages bool

Activa o desactiva la copia de código PHP (segmento de texto) en HUGE PAGES. Esto debería mejorar el rendimiento, pero requiere una configuración adecuada del sistema operativo. Disponible en Linux a partir de PHP 7.0.0, y en FreeBSD a partir de PHP 7.4.0.

opcache.lockfile_path string

Ruta absoluta utilizada para guardar los archivos de bloqueo compartidos (solo para *nix)

opcache.opt_debug_level string

Produce un volcado de opcode para depurar los diferentes pasos de optimización. 0x10000 mostrará los opcodes tal como el compilador los produce antes de que se produzca cualquier optimización, mientras que 0x20000 mostrará los códigos optimizados.

opcache.file_cache string

Activa y define el directorio de caché de segundo nivel. Esto debería mejorar el rendimiento cuando la memoria SHM está llena, al reiniciar el servidor o reinicializar SMH. El valor por omisión "" desactiva el almacenamiento en caché basado en archivos.

opcache.file_cache_only bool

Activa o desactiva el almacenamiento en caché del opcode en la memoria compartida.

Nota:

Antes de PHP 8.1.0, desactivar esta directiva con un archivo de caché ya lleno requiere el vaciado manual de la caché.

opcache.file_cache_consistency_checks bool

Activa o desactiva la validación de la suma de comprobación cuando el script se carga desde el caché de archivos.

opcache.file_cache_fallback bool

Sugiere opcache.file_cache_only=1 para un proceso determinado que ha fallado al unirse a la memoria compartida (solo para Windows). Se requiere el caché de archivos activado explícitamente.

Precaución

Desactivar esta opción de configuración puede impedir que los procesos se inicien, y por lo tanto se desaconseja.

opcache.validate_permission bool

Valida los permisos de los archivos almacenados en caché con respecto al usuario actual.

opcache.validate_root bool

Impide las colisiones de nombres en entornos `chroot`. Esto debería ser activado en todos los entornos `chroot` para impedir el acceso a archivos fuera del chroot.

opcache.preload string

Especifica un script PHP que será compilado y ejecutado al iniciar el servidor, y que puede precargar otros archivos, ya sea mediante include o utilizando la función opcache_compile_file(). Todas las entidades (por ejemplo funciones y clases) definidas en estos archivos estarán disponibles para las peticiones listas para usar, hasta que el servidor se apague.

Nota:

El precargado no es soportado en Windows.

opcache.preload_user string

Permite que el precargado se ejecute como usuario del sistema especificado. Esto es útil para servidores que se inician como root antes de cambiar a un usuario del sistema no privilegiado. El precargado como root no está permitido por omisión por razones de seguridad, a menos que esta directiva esté explícitamente definida como root. A partir de PHP 8.3.0, esta directiva ya no necesita ser definida para permitir el precargado al ejecutarse como root con CLI SAPI o phpdbg SAPI.

opcache.cache_id string

En Windows, todos los procesos que ejecutan el mismo PHP SAPI bajo el mismo usuario con el mismo ID de caché comparten una instancia única de OPcache. El valor del ID de caché puede ser elegido libremente.

Sugerencia

Para IIS, diferentes grupos de aplicaciones pueden tener su propia instancia OPcache utilizando la variable de entorno APP_POOL_ID como opcache.cache_id. For IIS, different application pools can have their own OPcache instance by using the environment variable APP_POOL_ID as opcache.cache_id.

opcache.jit string|int

Para un uso típico, esta opción acepta una de las cuatro siguientes valores string:

  • disable: Desactivado completamente, no puede ser activado durante el tiempo de ejecución.
  • off: Desactivado, pero puede ser activado durante el tiempo de ejecución.
  • tracing/on: Utiliza el tracing JIT. Activado por omisión y recomendado para la mayoría de los usuarios.
  • function: Utiliza el function JIT.

Para un uso avanzado, esta opción acepta un entero de 4 dígitos CRTO, donde los dígitos significan:

C (Banderas de optimización específica del CPU)
  • 0: Desactiva las optimizaciones específicas del CPU.
  • 1: Activa el uso de AVX, si el CPU lo soporta.
R (asignación de registros)
  • 0: No realiza ninguna asignación de registros
  • 1: Realiza asignaciones de registros a nivel de bloque.
  • 2: Realiza asignaciones de registros globales.
T (disparador)
  • 0: Compila todas las funciones al cargar el script.
  • 1: Compila las funciones en su primera ejecución.
  • 2: Perfila las funciones en la primera petición y compila las funciones más calientes justo después.
  • 3: Perfila a la volada y compila las funciones calientes.
  • 4: Actualmente no utilizado.
  • 5: Utiliza el tracing JIT. Perfila a la volada y compila las trazas para los segmentos de código caliente.
O (nivel de optimización)
  • 0: Sin JIT.
  • 1: JIT mínimo (llama a los manejadores estándar de la VM).
  • 2: Inlinea los manejadores de la VM.
  • 3: Utiliza la inferencia de tipos.
  • 4: Utiliza un grafo de llamadas.
  • 5: Optimiza el script entero.
El modo "tracing" corresponde a CRTO = 1254, el modo "function" corresponde a CRTO = 1205.

opcache.jit_buffer_size int

La cantidad de memoria compartida reservada para código compilado JIT. Un valor de cero desactiva el JIT.

Cuando se usa un integer, el valor del mismo es medido en bytes. También se puede usar la notación reducida, tal como se describe en esta FAQ.
opcache.jit_debug int

Una máscara de bits que especifica qué salida de depuración de JIT activar Para los valores posibles, consulte » zend_jit.h (ver las definiciones de macro que comienzan con ZEND_JIT_DEBUG).

opcache.jit_bisect_limit int

Opción de depuración que desactiva la compilación JIT después de la compilación de un cierto número de funciones. Esto puede ser útil para bisectar la fuente de una mala compilación JIT. Nota: esta opción solo funciona cuando el disparador JIT está definido a 0 (compilación al cargar el script) o 1 (compilación a la primera ejecución), por ejemplo, opcache.jit=1215. Ver más en la opción opcache.jit.

opcache.jit_prof_threshold float

Al utilizar el modo de disparador "perfilar las funciones en la primera petición", este límite determina si una función es considerada caliente. El número de llamadas a la función dividido por el número de llamadas a todas las funciones debe ser superior a este límite. Por ejemplo, un límite de 0.005 significa que una función que corresponde a más de 0.5% de todas las llamadas será compilada JIT.

opcache.jit_max_root_traces int

Número máximo de trazas raíz (root traces). La traza raíz es un flujo de ejecución que toma primero un camino a través del código, que es una unidad de la compilación JIT. JIT no compilara nuevo código si alcanza este límite.

opcache.jit_max_side_traces int

Número máximo de trazas laterales (side trace) que una traza raíz puede tener. La traza lateral es otro flujo de ejecución que no sigue el camino de la traza raíz compilada. Las trazas laterales pertenecientes a la misma traza raíz no serán compiladas si se alcanza este límite.

opcache.jit_max_exit_counters int

Número máximo de contadores de salida de traza lateral. Esto limita el número total de trazas laterales que puede haber, a través de todas las trazas raíz.

opcache.jit_hot_loop int

Después de cuántas iteraciones un bucle es considerado caliente. El rango de valores válidos es [0,255] ; para cualquier parámetro fuera de este rango, por ejemplo -1 o 256, se utilizará el valor por omisión en su lugar. Especialmente, un valor nulo desactivará el JIT para trazar y compilar todos los bucles.

opcache.jit_hot_func int

Después de cuántas llamadas una función es considerada caliente. El rango de valores válidos es [0,255] ; para cualquier parámetro fuera de este rango, por ejemplo -1 o 256, se utilizará el valor por omisión en su lugar. Especialmente, un valor nulo desactivará el JIT para trazar y compilar todas las funciones.

opcache.jit_hot_return int

Después de cuántos retornos un retorno es considerado caliente. El rango de valores válidos es [0,255] ; para cualquier parámetro fuera de este rango, por ejemplo -1 o 256, se utilizará el valor por omisión en su lugar. Especialmente, un valor nulo desactivará el JIT para trazar y compilar todos los retornos.

opcache.jit_hot_side_exit int

Después de cuántas salidas, una salida lateral es considerada caliente. El rango de valores válidos es [0,255] ; para cualquier parámetro fuera de este rango, por ejemplo -1 o 256, se utilizará el valor por omisión en su lugar. Especialmente, un valor nulo desactivará el JIT para trazar y compilar todas las salidas laterales.

opcache.jit_blacklist_root_trace int

Número máximo de intentos de compilación de una traza raíz antes de que esta sea excluida.

opcache.jit_blacklist_side_trace int

Número máximo de intentos de compilación de una traza lateral antes de que esta sea excluida.

opcache.jit_max_loop_unrolls int

Número máximo de intentos para desenrollar un bucle en una traza lateral, intentando alcanzar la traza raíz y cerrar el bucle exterior.

opcache.jit_max_recursive_calls int

Número máximo de llamadas recursivas desenrolladas en un bucle.

opcache.jit_max_recursive_returns int

Número máximo de retornos recursivos desenrollados en un bucle.

opcache.jit_max_polymorphic_calls int

Número máximo de intentos para inlinear una llamada polimórfica (dinámica o método). Llamadas por encima de este límite son tratadas como megamórficas y no son inlineadas.

add a note

User Contributed Notes 7 notes

up
18
damien at overeem dot org
8 years ago
When using PHP on a windows platform and enabling opcache, you might run into occasional 500 errors. These will appear to show up entirely random.

When this happens, your windows Event log (Windows Logs/Application) will show (probably multiple) entries from Zend OPcache with Event ID 487. Further information will state the following error message: "Base address marks unusable memory region".

This issue can be resolved by adding the following to your php.ini:

opcache.mmap_base = 0x20000000

Unfortunately I do not know the significance of the value "0x20000000". I can only tell you that this value works to solve the problem (Tried and tested)
up
7
carneiro at isharelife dot com dot br
5 years ago
If you try to allocate more memory that is available using opcache.memory_consumption PHP stops working without any logs to help on debugging. This issue took me 4 hours to solve when creating a staging server with same configrations and less memory that was available on production server.
up
8
wessos at example dot org
6 years ago
The optimization levels as of php 7.3 are the following:

#define ZEND_OPTIMIZER_PASS_1 (1<<0) /* CSE, STRING construction */
#define ZEND_OPTIMIZER_PASS_2 (1<<1) /* Constant conversion and jumps */
#define ZEND_OPTIMIZER_PASS_3 (1<<2) /* ++, +=, series of jumps */
#define ZEND_OPTIMIZER_PASS_4 (1<<3) /* INIT_FCALL_BY_NAME -> DO_FCALL */
#define ZEND_OPTIMIZER_PASS_5 (1<<4) /* CFG based optimization */
#define ZEND_OPTIMIZER_PASS_6 (1<<5) /* DFA based optimization */
#define ZEND_OPTIMIZER_PASS_7 (1<<6) /* CALL GRAPH optimization */
#define ZEND_OPTIMIZER_PASS_8 (1<<7) /* SCCP (constant propagation) */
#define ZEND_OPTIMIZER_PASS_9 (1<<8) /* TMP VAR usage */
#define ZEND_OPTIMIZER_PASS_10 (1<<9) /* NOP removal */
#define ZEND_OPTIMIZER_PASS_11 (1<<10) /* Merge equal constants */
#define ZEND_OPTIMIZER_PASS_12 (1<<11) /* Adjust used stack */
#define ZEND_OPTIMIZER_PASS_13 (1<<12) /* Remove unused variables */
#define ZEND_OPTIMIZER_PASS_14 (1<<13) /* DCE (dead code elimination) */
#define ZEND_OPTIMIZER_PASS_15 (1<<14) /* (unsafe) Collect constants */
#define ZEND_OPTIMIZER_PASS_16 (1<<15) /* Inline functions */

Source: https://lxr.room11.org/xref/php-src%40master/ext/opcache/Optimizer/zend_optimizer.h
up
6
tizian dot schmidlin at gmail dot com
6 years ago
It should be noted that according to the original RFC (https://wiki.php.net/rfc/preload) `opcache.preload` caches preloaded files *forever* for all instances of the underlying PHP process.

That means, that hosting multiple websites on the same server might result in some unexpected behaviour.

Concrete example:
- you have a Symfony 3.2 App (which might be an endpoint of some type) and a Symfony 3.4 App (which might be your main application)
- both apps have a main Class called App that is in the same namespace (as it is usual, since the class name is unique to each project)
- depending on which app is loaded first, one or the other will work, since `opcache.preload` has no file based distinction of what class is used where and simply provides them to the user space

This is avoidable by simply not preloading user space classes or, if you work with FPM, by defining a pool for each app.

In order to optimize memory consumption, you might also use a common FPM Pool for all Symfony 3.4 Apps and preload the entire framework in there and simply not preload user space classes (which might be cached by opcache anyway but is slower, since it will be checked if the file has changed on every request).
up
6
bdurand at ensemblegroup dot net
8 years ago
It would appear as though the [opcache.enable] setting is indeed NOT PHP_INI_ALL.
For changing it within user.ini yields no effect when disabled at global level. user.ini is ignored for that setting.
up
2
JReezy
1 year ago
Despite the set of values for opcache.max_accelerated_files including the value 1048793, the maximum as stated is 1000000. If you select a number above 1000000 the value is set its default which is 10000.
up
-1
daniel at elementor dot com
1 year ago
When opcache.use_cwd=0 include/require of relative paths from different directories will both resolve to the same (first) file.

Example dir structure:
app1
index.php
lib.php
app2
index.php
lib.php

both index.php(s):
include "lib.php";

app1/lib.php:
echo "app1";

app2/lib.php:
echo "app2";

both will echo "app1".
To Top