php[tek] 2018 : Call for Speakers

apc_define_constants

(PECL apc >= 3.0.0)

apc_define_constants Define un conjunto de constantes para recuperación y definición en masa

Descripción

bool apc_define_constants ( string $key , array $constants [, bool $case_sensitive = true ] )

define() es notoriamente lenta. Ya que el principal beneficio de APC es aumentar el rendimiento de scripts/aplicaciones, se proporciona este mecanismo para hacer más eficiente el proceso de definición de constantes en masa. Sin embargo, esta función no lo realiza tan bien como se esperaba.

Para una solución de rendimiento mejor, pruebe la extensión » hidef de PECL.

Nota: Para eliminar un conjunto de constantes almacenadas (sin limpiar la caché por completo), se puede pasar un array vacío al parámetro constants, limpiando de manera eficaz los valores almacenados.

Parámetros

key

key sirve como el nombre del conjunto de constantes que va a ser almacenado. key se usa para recuperar las constantes almacenadas en apc_load_constants().

constants

Un array asociativo de pares nombre_constante => valor. nombre_constante debe seguir las reglas normales de nominación de constantes. valor debe evaluar un valor escalar.

case_sensitive

El comportamiento predeterminado para las constantes es ser declaradas sensibles a mayúsculas-minúsculas; es decir, CONSTANTE y Constante representan valores diferentes. Si este parámetro es FALSE las constantes serán declaradas como símbolos insensibles a mayúsculas-minúsculas.

Valores devueltos

Devuelve TRUE en caso de éxito o FALSE en caso de error.

Ejemplos

Ejemplo #1 Ejemplo de apc_define_constants()

<?php
$constantes 
= array(
    
'UNO'   => 1,
    
'DOS'   => 2,
    
'TRES' => 3,
);
apc_define_constants('números'$constantes);
echo 
UNODOSTRES;
?>

El resultado del ejemplo sería:

123

Ver también

add a note add a note

User Contributed Notes 2 notes

up
0
jmucchiello AT yahoooooooo DOT com
7 years ago
It doesn't introduce much overhead if you make use of conditional function definitions:

<?php
if (function_exists('apc_load_constants')) {
    function
define_array($key, $arr, $case_sensitive = true)
    {
        if (!
apc_load_constants($key, $case_sensitive)) {
           
apc_define_constants($key, $arr, $case_sensitive);
        }
    }
} else {
    function
define_array($key, $arr, $case_sensitive = true)
    {
        foreach (
$arr as $name => $value)
           
define($name, $value, $case_sensitive);
    }
}

//in your code you just write something like this:

define_array('NUMBERS', Array('ONE' => 1, 'TWO' => 2, 'THREE' => 3));
?>
up
0
webmaster at thedigitalorchard dot ca
7 years ago
An observation that I've made is that the nature of apc_define_constants() binding the list of constants to a key and then requiring that key to load the constants is limiting. Furthermore, there's no way to append additional constants to a given key.

A solution that I've been adopting is to build a list of constants to be defined, and then do one of two things:

1) if APC is enabled, then use apc_define_constants();
2) ...else loop through the list and define each constant normally.

The problem I've run into is when this process happens at different places in a large application, it can introduce overhead that otherwise wouldn't be there if it was possible to append to an existing list of defined constants in APC.
To Top