• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • apc_define_constants()

    (PECL apc >= 3.0.0)

    Defines a set of constants for retrieval and mass-definition

    说明

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

    define() is notoriously slow. Since the main benefit of APC is to increase the performance of scripts/applications, this mechanism is provided to streamline the process of mass constant definition. However, this function does not perform as well as anticipated.

    For a better-performing solution, try the » hidef extension from PECL.

    Note: To remove a set of stored constants(without clearing the entire cache), an empty array may be passed as the$constantsparameter, effectively clearing the stored value(s).

    参数

    $key

    The$keyserves as the name of the constant set being stored. This$keyis used to retrieve the stored constants in apc_load_constants().

    $constants

    An associative array ofconstant_name => valuepairs. Theconstant_namemust follow the normal constant naming rules.valuemust evaluate to a scalar value.

    $case_sensitive

    The default behaviour for constants is to be declared case-sensitive; i.e.CONSTANTandConstantrepresent different values. If this parameter evaluates to FALSE the constants will be declared as case-insensitive symbols.

    返回值

    成功时返回TRUE,或者在失败时返回FALSE

    范例

    Example #1 apc_define_constants() example

    <?php
    $constants = array(
        'ONE'   => 1,
        'TWO'   => 2,
        'THREE' => 3,
    );
    apc_define_constants('numbers', $constants);
    echo ONE, TWO, THREE;
    ?>
    

    以上例程会输出:

    123
    

    参见

    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));
    ?>
    
    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.

    上篇:apc_dec()

    下篇:apc_delete_file()