Skip to content

🚫 APC - 可选的 PHP 缓存

🚫

这个包不再维护, 并且被其他包取代

介绍

高级php缓存扩展, windows 下没有编译出此扩展

APC -> 开放自由的 opcode 缓存, 目标是提供一个自由开放健全的框架用于缓存和优化的中间件

Opcode是一种PHP脚本编译后的中间语言,就像Java的ByteCode,或者.NET的MSL

安装

在 Linux上安装 PHP的缓存 APC

Installing APC in Windows

APC Windows downloads

PHP APC for Windows

配置(php.ini)

WIN : 在Windows上,APC需要一个临时目录,并且Web服务器对这个目录可写,APC会检测TMP,TEMP,USERPROFILE这些Windows的环境变量,如果这些都没有,会检查系统文件夹下的WINDOWS目录

apc.enabled 0|1

PHP_INI_SYSTEM 是否启用apc

apc.shm_segments integer

PHP_INI_SYSTEM 编译器要分配的的共享内存块的数目

apc.shm_size integer

PHP_INI_SYSTEM 以 MB 为单位的每个共享内存块的大小

apc.optimization integer

PHP_INI_ALL 优化级别, 设为 0 则禁用优化器,更高的值则使用更主动的优化

apc.num_files_hint integer

PHP_INI_SYSTEM 服务器上被包含或被请求的不同源文件数目的大概估计

apc.user_entries_hint integer

PHP_INI_SYSTEM 根据唯一用户数来存储缓存变量

apc.ttl integer

PHP_INI_SYSTEM 缓存条目在缓冲区中允许逗留的秒数, 缓冲区被填满则不能存储新的条目, 0代表永不过期, 大于0, apc将尝试删除旧的条目

apc.user_ttl integer

PHP_INI_SYSTEM 对于每个用户而言的

apc.gc_ttl integer

PHP_INI_SYSTEM 缓存条目在垃圾回收表中能够存在的秒数, 0为禁用

apc.cache_by_default 0|1

PHP_INI_ALL 默认为 1, 表示全部缓存,如果关闭,则 apc.filters会使用.

apc.filters

PHP_INI_SYSTEM 一个以 " , " 分割的 POSIX 扩展正则表达式列表, 默认的是匹配的文件不缓存,因为默认的是“-”, 如果正则表达式的第一个字符是+ t则意味着任何匹配表达式的文件会被缓存,如果第一个字符是 - 则任何匹配项都不会被缓存

apc.mmap_file_mask string

PHP_INI_SYSTEM 真心看不懂

apc.slam_defense integer

PHP_INI_SYSTEM 百分比的跳过比率设置

apc.file_update_protection integer

PHP_INI_SYSTEM 文件更新保护, 如果一个文件最后访问的时间和更新时间小于这个数值则不作缓存.

apc.enable_cli integer

PHP_INI_SYSTEM 是否为CLI版本启用APC功能

apc.max_file_size integer

PHP_INI_SYSTEM 文件大于这个大小的不缓存

apc.use_request_time

PHP_INI_ALL 使用SAPI的请求开始时间

apc.stat integer

PHP_INI_SYSTEM 是否启用脚本更新检查

apc.write_lock 0 | 1

PHP_INI_SYSTEM 写锁保证只有一个进程将尝试编译并缓存未缓存的脚本

apc.report_autofilter 0 | 1

PHP_INI_SYSTEM 是否记录所有由于early/late binding原因而自动未被缓存的脚本

apc.include_once_override 0 | 1

PHP_INI_SYSTEM 优化include_once()和require_once()函数以避免执行额外的系统调用

apc.rfc1867 0|1

PHP_INI_SYSTEM 开启文件上传的APC控制 当开启的时候 ,指定 APC_UPLOAD_PROGRESS 这个选项将会开启apc的功能的调用

apc.rfc1867_prefix string

PHP_INI_SYSTEM 用于上传文件的缓冲项条目名称前缀

apc.rfc1867_name string

PHP_INI_SYSTEM 需要由APC处理的上传文件的隐藏表单项名称

apc.rfc1867_freq integer PHP_INI_SYSTEM 用户上传文件缓存项的更新频率, 也可以说是进度.

apc.rfc1867_ttl integer PHP_INI_SYSTEM 延迟

apc.localcache integer PHP_INI_SYSTEM 使用本地缓存

apc.localcache.size integer PHP_INI_SYSTEM 本地缓存的大小

apc.coredump_unmap integer PHP_INI_SYSTEM

apc.stat_ctime integer PHP_INI_SYSTEM 验证创建时间

apc.preload_path string PHP_INI_SYSTEM 上传的文件路径

apc.file_md5 0|1 PHP_INI_SYSTEM 记录文件的MD5值

apc.canonicalize 0|1 PHP_INI_SYSTEM 如果设置为口开启,则在no-state模式将相对路径更改为绝对路径

apc.lazy_functions 0|1 PHP_INI_SYSTEM 用函数延迟加载

apc.lazy_classes 0|1 PHP_INI_SYSTEM 启用类延迟加载

函数

bool apc_add ( string $key , mixed $var [, int $ttl = 0 ] )

缓存一个变量到缓存中, 如果指定时间,则在多少s之后被移除, 否则缓存系统使用clear,或者restart等 , 变量一直存在在缓存中 这个仅仅适用于缓存不存在的时候去添加, 如果已经存在且没有到延迟时间, 将不会对缓存变量做任何操作

bool apc_store ( string $key , mixed $var [, int $ttl = 0 ] )

缓存变量到缓存中,如果存在,则给你覆盖

mixed apc_fetch ( mixed $key [, bool &$success ] )

从服务器取出一个变量, 成功 success为true ,  失败为false ;  同样返回也是false或者变量 ,  为了区别false和存储的变量 ,  尽量使用 success 可以使用数组的值进行一连串的调用

mixed apc_exists ( mixed $keys )

检测变量是否存在,如果是一个数组,则返回一个key存在的数组

mixed apc_delete ( string $key )

移除缓存, 成功返回true, 失败返回false

bool apc_cas ( string $key , int $old , int $new )

变量替换,如果变量等于$old, 则替换成 $new

int apc_dec ( string $key [, int $step = 1 [, bool &$success ]] )

递减一个存储的integer值,如果成功返回当前值的数值, 失败返回false

int apc_inc ( string $key [, int $step = 1 [, bool &$success ]] )

递增一个存储的integer值

string apc_bin_dump ([ array $files [, array $user_vars ]] )

根据文件或用户变量,获取编译之后的opcode

bool apc_bin_load ( string $data [, int $flags = 0 ] )

加载编译之后的opcode

int apc_bin_dumpfile ( array $files , array $user_vars , string $filename [, int $flags = 0 [, resource $context ]] )

将文件和变量, 缓存到一个二进制文件

bool apc_bin_loadfile ( string $filename [, resource $context [, int $flags ]] )

加载缓存的二进制文件

array apc_cache_info ([ string $cache_type [, bool $limited = false ]] )

apc 缓存的信息[数组形式返回]

Array
(
    [num_slots] => 1031 区块
    [ttl] => 0                     存储的时间
    [num_hits] => 4                点击次数
    [num_misses] => 2
    [num_inserts] => 2
    [expunges] => 0                摘掉
    [start_time] => 1347822191
    [mem_size] => 4168             内存占用
    [num_entries] => 1
    [file_upload_progress] => 1
    [memory_type] => mmap          内存类型
    [locking_type] => pthread mutex Locks
    [cache_list] => Array          缓存的类型
    (
        [0] => Array
        (
            [type] => file               文件缓存
            [device] => 2050
            [inode] => 134911
            [filename] => /home/vsftpd/phpuser/apc/show.php
            [num_hits] => 4
            [mtime] => 1347822690
            [creation_time] => 1347822692
            [deletion_time] => 0
            [access_time] => 1347822701
            [ref_count] => 1
            [mem_size] => 4168
        )
    )
    [deleted_list] => Array()
    [slot_distribution] => Array()
)

bool apc_clear_cache ([ string $cache_type ] )

清空缓存

mixed apc_compile_file ( string $filename [, bool $atomic = true ] )

根据传递的过滤器来过滤文件并且返回opcode缓存

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

定义一系列常量, 由于define函数是臭名昭著的慢,所以这个是一个很快速的函数

mixed apc_delete_file ( mixed $keys )

删除编译完成的缓存的opcode文件

bool apc_load_constants ( string $key [, bool $case_sensitive = true ] )

加载定义的常量

array apc_sma_info ([ bool $limited = false ] )

获取 apc 的共享内存分配信息 shared memory allocation 信息

Array
(
    [num_seg] => 1
    [seg_size] => 33554352
    [avail_mem] => 33529392
    [block_lists] => Array
        (
            [0] => Array
                (
                    [0] => Array
                        (
                            [size] => 33529368
                            [offset] => 25016
                        )

                )

        )

)

public APCIterator::__construct ( string $cache [, mixed $search = null [, int $format [, int $chunk_size = 100 [, int $list ]]]] )

创建迭代器

$cache      :     user / file
$search     :     用来匹配缓存键值的正则表达式, 或者数组键值表达式,
$format     :     常量定义的格式
$chunk_size :     截断的大小
$list       :     列表中的类型

public mixed APCIterator::current ( void )

获取当前的条目

public int APCIterator::getTotalCount ( void )

获取当前的总大小

public int APCIterator::getTotalHits ( void )

获取总的缓存点击数

public int APCIterator::getTotalSize ( void )

获取总的缓存大小

public string APCIterator::key ( void )

获取键值

public void APCIterator::next ( void )

向下移动

public void APCIterator::rewind ( void )

重置迭代器到第一个元素

public void APCIterator::valid ( void )

检测当前的迭代器位置是否可用


说明

创建时间: 2023-01-15 09:27:00 , 最后编辑于 2023-11-24 13:59:00