您的位置:新葡亰496net > 服务器网络 > 新葡亰496net使用详解,36中APC与APCu的对比与感觉

新葡亰496net使用详解,36中APC与APCu的对比与感觉

发布时间:2019-11-16 08:57编辑:服务器网络浏览(168)

    [ PHP ] 如何正确发布 PHP 代码,php发布代码

    PHP5.4.36中APC与APCu的对比与感觉

    APC全称Alternative PHP Cache,可选php缓存,包括opcache及用户变量缓存。

    APCu仅包含用户变量缓存。

    近段时间把服务器php从5.2.17升级到了5.4.36,apache也由2.2.22升级到了2.4.10,之前写的代码中使用了memcache、apc、zend optimization扩展,因此,想把整套都迁移到新的环境下。经过一段时间的实验,最终使用了php ts 5.4 版本,主要是为了使用ISAPI安装方式,而未使用推荐的FASTCGI。原因下面有叙述。

    需要下载安装vc运行库,版本为VC9,下载地址

    VC12 为vc2013,VC11为Vc2012。

    memcache顺理成章是没问题的, 这个地址下载最新的windows下的memcache,php5.3、php 5.4、php 5.5、php 5.6都有对应的包,5.2对应的包已取消。

    apc遇到新问题了,最新的APC 已经取消了5.2的支持,切已有一年多未更新版本了,看样子未来对于高版本的php支持也会成问题了,因此需要寻找新的方案。

    后来发现,5.4下很多人用了这个 ,据说是官方新的推荐做法,不过经确认仅仅只有user caching,仅仅支持用户缓存,管理工具apc.php也有所变化。且无需配置,比APC配置简单了许多。

    再次,zend optimization中也取消了5.2以上的支持,最新叫zend guard且只支持nts版本的php,只能使用fastcgi方式,支持5.3 5.4以上,也取消了5.2的支持。我想使用ts版本的php,因为在试用过程中发现,zend guard好像纯粹是为了解码新的加密代码了。可能是因为我系统的问题,导致fastcgi一直僵死,出现不定时的卡死,进程中发现很多的php-cgi.exe进程。所以后来为了解决问题,使用了新的推荐的opcache扩展,同样是官方支持php5.3、php5.4、 php5.5,这是纯粹的opcache。地址

    需要php.ini中配置

    [opcache]
    zend_extension = d:/wamp/php/ext/php_新葡亰496net使用详解,36中APC与APCu的对比与感觉。opcache.dll
    opcache.enable=1
    opcache.memory_consumption = 128
    opcache.interned_strings_buffer = 8
    opcache.max_accelerated_files = 4000
    opcache.revalidate_freq = 60
    opcache.fast_shutdown = 1
    opcache.enable_cli = 1

    APCu默认自动配置情况下(通过apc.php查看):

    Runtime Settings
    apc.coredump_unmap 0
    apc.enable_cli 0
    apc.enabled 1
    apc.entries_hint 4096
    apc.gc_ttl 3600
    apc.preload_path 
    apc.rfc1867 0
    apc.rfc1867_freq 0
    apc.rfc1867_name APC_UPLOAD_PROGRESS
    apc.rfc1867_prefix upload_
    apc.rfc1867_ttl 3600
    apc.serializer php
    apc.shm_segments 1
    apc.shm_size 32M
    apc.slam_defense 1
    apc.smart 0
    apc.ttl 0
    apc.use_request_time 1
    apc.writable /tmp

    APC运行期的设置(通过apc.php查看)

    [apc]
    apc.enabled = on
    apc.shm_segments = 1
    apc.shm_size = 16M
    apc.user_entries_hint = 0
    apc.user_ttl = 0
    apc.cache_by_default = off
    apc.enable_cli = off
    apc.ttl = 0
    apc.gc_ttl = 3600
    apc.max_file_size = 1m
    ;apc.mmap_file_mask =
    apc.num_files_hint = 0
    apc.optimization = 0
    apc.report_autofilter = off
    apc.stat = off
    apc.write_lock = off
    apc.rfc1867 = off
    apc.canonicalize = 0
    apc.use_request_time = 0
    apc.filters = ""
    apc.slam_defense = off

    Runtime Settings
    apc.cache_by_default 
    apc.canonicalize 0
    apc.coredump_unmap 0
    apc.enable_cli 
    新葡亰496net使用详解,36中APC与APCu的对比与感觉。apc.enabled 1
    apc.file_md5 0
    apc.file_update_protection 2
    apc.filters 
    apc.gc_ttl 3600
    apc.include_once_override 0
    apc.lazy_classes 0
    apc.lazy_functions 0
    apc.max_file_size 1m
    apc.num_files_hint 0
    apc.preload_path 
    apc.report_autofilter 
    apc.rfc1867 
    apc.rfc1867_freq 0
    apc.rfc1867_name APC_UPLOAD_PROGRESS
    apc.rfc1867_prefix upload_
    apc.rfc1867_ttl 3600
    apc.serializer default
    apc.shm_segments 1
    apc.shm_size 16M
    apc.shm_strings_buffer 4M
    apc.slam_defense 
    apc.stat 
    apc.stat_ctime 0
    apc.ttl 0
    apc.use_request_time 0
    apc.user_entries_hint 0
    apc.user_ttl 0
    apc.write_lock

    CentOS 6.3 安装LNMP (PHP 5.4,MyySQL5.6)

    在部署LNMP的时候遇到Nginx启动失败的2个问题

    Ubuntu安装Nginx php5-fpm MySQL(LNMP环境搭建)

    《细说PHP》高清扫描PDF 光盘源码 全套教学视频

    CentOS 6中配置PHP的LNMP的开发环境 

    PHP 的详细介绍:请点这里
    PHP 的下载地址:请点这里

    本文永久更新链接地址:

    APC全称Alternative PHP Cache,可选php缓存,包括opcache及用户变量缓存。 APCu仅包含用户变量缓存。 近段时间把服...

    一、APC缓存简介
    APC,全称是Alternative PHP Cache,官方翻译叫”可选PHP缓存”。它为我们提供了缓存和优化PHP的中间代码的框架。 APC的缓存分两部分:系统缓存和用户数据缓存。
    系统缓存
    它是指APC把PHP文件源码的编译结果缓存起来,然后在每次调用时先对比时间标记。如果未过期,则使用缓存的中间代码运行。默认缓存
     3600s(一小时)。但是这样仍会浪费大量CPU时间。因此可以在php.ini中设置system缓存为永不过期(apc.ttl=0)。不过如果这样设置,改运php代码后需要重启WEB服务器。目前使用较多的是指此类缓存。
    用户数据缓存 缓存由用户在编写PHP代码时用apc_store和apc_fetch函数操作读取、写入的。如果数据量不大的话,可以一试。如果数据量大,使用类似memcache此类的更加专著的内存缓存方案会更好
    缓存key生成规则
    APC的缓存中的每个slot都会有一个key,key是
     apc_cache_key_t结构体类型,除了key相关的属性,关键是h字段的生成。 h字段决定了此元素落于slots数组的哪一个位置。对于用户缓存和系统缓存,其生成规则不同。 用户缓存通过apc_cache_make_user_key函数生成key。通过用户传递进来的key字符串,依赖PHP内核中的hash函数(PHP的hashtable所使用的hash函数:zend_inline_hash_func),生成h值。
    系统缓存通过apc_cache_make_file_key函数生成key。通过APC的配置项apc.stat的开关来区别对待不同的方案。在打开的情况下,即
     apc.stat= On 时,如果被更新则自动重新编译和缓存编译后的内容。此时的h值是文件的device和inode相加所得的值。在关闭的情况下,即apc.stat=off时,当文件被修改后,如果要使更新的内容生效,则必须重启Web服务器。此时h值是根据文件的路径地址生成,并且这里的路径是绝对路径。即使你是使用的相对路径,也会查找PG(include_path)定位文件,以取得绝对路径,所以使用绝对路径会跳过检查,可以提高代码的效率。
    添加缓存过程
    以用户缓存为例,apc_add函数用于给APC缓存中添加内容。如果key参数为字符串中,APC会根据此字符串生成key,如果key参数为数组,APC会遍历整个数组,生成key。根据这些key,APC会调用_apc_store将值存储到缓存中。由于这是用户缓存,当前使用的缓存为apc_user_cache。执行写入操作的是apc_cache_make_user_entry函数,其最终调用apc_cache_user_insert执行遍历查询和写入操作。与此对应,系统缓存使用apc_cache_insert执行写入操作,其最终都会调用_apc_cache_insert。
    不管是用户缓存还是系统缓存,大体的执行过程类似,步骤如下:

    如何正确发布PHP代码

    几乎每一个 PHP 程序员都发布过代码,可能是通过 FTP 或者 rsync 同步的,也可能是通过 svn 或者 git 更新的。一个活跃的项目可能每天都要发布若干次代码,但是现实却是很少有人注意其中的细节,实际上这里面有好多坑,很可能你就在坑中却浑然不知。

    一个正确实现的发布系统至少应该支持原子发布。如果说每一个版本都表示一个独立的状态的话,那么在发布期间,任何一次请求只能在单一状态下被执行。如此称之为支持原子发布;反之如果在发布期间,一次请求跨越不同的状态,那么就不能称之为原子发布。我们不妨举个例子来说明一下:假设一次请求需要 include 两个 PHP 文件,分别是 a.phpb.php,当 include a.php 完成后,发布代码,接着 include b.php,如果处理不当的话,那么就可能会导致旧版本的 a.php 和新版本的 b.php 同时存在于同一个请求之中,换句话说就是没有实现原子发布。

    开源世界里有很多不错的发布代码工具,比如 ruby 社区的 capistrano,其流程大致就是发布代码到一个全新的目录,然后再软链接到真正的发布目录。

    ├── current -> releases/v1
    └── releases
        ├── v1
        │   ├── foo.php
        │   └── bar.php
        └── v2
            ├── foo.php
            └── bar.php
    

    不过鉴于 PHP 本身的特殊性,如果只是简单套用上面的流程,那么将很难实现真正的原子发布。要理清个中缘由,还需要了解一下 PHP 中的两个 Cache 的概念:

    • opcode cache
    • realpath cache

    先聊聊 opcode cache,基本就是 apc 或者 zend opcode,关于它的作用,大家都已经很熟悉,不必多言,需要注意的是 apc 的 bug 很多,比如开启了 apc.enable_cli 配置后就会有很多灵异问题,所以说 opcode cache 还是尽可能使用 zend opcache 吧,如果需要缓存数据,可以用 apcu。此外 apczend opcode 对缓存键的选择有所差异:apc 选择的是文件的 inodezend opcode 选择的是文件的 path

    再聊聊 realpath cache,它的作用是缓冲获取文件信息的 IO 操作,大多数时候它对我们而言是透明的,以至于很多人都不知道它的存在,需要注意的是 realpath cache 是进程级别的,也就是说,每一个 php-fpm 进程都有自己独立的 realpath cache

    假设在发布代码期间,opcode cache 或者 realpath cache 里的数据出现过期,那么就会出现一部分缓存是旧文件,一部分缓存是新文件的非原子发布的情况,为了避免出现这种情况,我们应该保证缓存过期时间足够长,最好是除非我们手动刷新,否则永远不过期,对应到配置上就是:关闭 apc.stat、opcache.validate_timestamps 配置,设置足够大的 realpath_cache_size、realpath_cache_ttl 配置,必要的监控总是有好处的。

    相关的技术细节特别琐碎,建议大家仔细阅读如下资料:

    • realpath_cache
    • PHP’s OPCache extension review
    • Atomic deploys at Etsy
    • Cache invalidation for scripts in symlinked folders

    在采用软链接发布代码的时候,通常遇到的第一个问题多半是新代码不生效!即便调用了 apc_clear_cache 或者 opcache_reset 方法也无效,重启 php-fpm 自然是能够解决问题,不过对脚本语言来说重启太重了!难道除了重启就没有别的办法了么?

    事实上之所以会出现这样的问题,主要是因为 opcode cache 是通过 realpath cache 获取文件信息,即便软链接已经指向了新位置,但是如果 realpath cache 里还保存着旧数据的话,opcode cache 依然无法知道新代码的存在,缺省情况下,realpath_cache_ttl 缓存有效期是两分钟,这意味着发布代码后,可能要两分钟才能生效。为了让发布尽快生效,需要以进程为单位清除 realpath cache

    <?php
    
        $key = 'php.pid_' . getmypid();
    
        if (($rev = apc_fetch($key)) != DEPLOY_VERSION) {
            if($rev < DEPLOY_VERSION) {
                apc_store($key, DEPLOY_VERSION);
            }
    
            clearstatcache(true);
        }
    

    如此在 apc 环境下基本就能工作了,但是在 zend opcode 环境下还可能有问题。因为在缺省情况下 opcache.revalidate_path 是关闭的,此时会缓存未解析的符号链接的值,这会导致即便软链接指向修改了,也无法生效,所以在使用 zend opcode 的时候,如果使用了软链接,视情况可能需要把 opcache.revalidate_path 激活。

    详细介绍参考:PHP’s OPCache extension review。

    BTW:如果需要手动重置 opcode cache,需要注意的是因为它是基于 SAPI 的概念,所以不能直接在命令行下调用 apc_clear_cache 或者 opcache_reset 方法来重置缓存,当然办法总是有的,那就是使用 CacheTool 在命令行下模拟 fastcgi 请求。

    分析到这里,我们不妨反思一下:在 PHP 中原子发布之所以是一个棘手的问题,归根结底是因为软链接和缓存之间的的矛盾。不管是 opcode cache 还是 realpath cache,都是 PHP 固有的缓存特性,基于客观需要无法绕开,如此说来是否有办法绕开软链接,使其成为马奇诺防线呢?答案是 NGINX 的 $realpath_root:

        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
    

    有了 $realpath_root,即便 DOCUMENT_ROOT 目录中含有软链接,NGINX 也会把软链接指向的真正的路径发给 PHP,也就是说,对 PHP 而言,软链接已经不存在了!不过作为代价,每一次请求,NGINX 都要通过相对昂贵的 IO 操作获取 $realpath_root 的值,通过 strace 命令我们能监控这一过程,下图从 currentfoo 的过程:

    在本例中,压测发现使用 $realpath_root 后,性能下降了大约 5% 左右,不过明眼人一下就能发现,虽然 $realpath_root 导致了 lstatreadlink 操作,但是 lstat 操作的次数是和目录深度成正比的,也就是说目录越深,执行的 lstat 次数越多,性能下降也就越大。如果能够降低发布目录的深度,那么可以预计还能降低一些性能损耗。

    结尾介绍一下 Deployer,它是 PHP 中做得比较好的工具,有很多特色,比如支持并行发布,具体演示如下图,左边是串行,右边是并行,使用「vvv」能得到更详细信息:

    不过 Deployer 在原子发布上有一点瑕疵,具体见 release/symlink 代码:

    <?php
    
    // deploy:release
    run("cd {{deploy_path}} && if [ -h release ]; then rm release; fi");
    run("ln -s $releasePath {{deploy_path}}/release");
    // deploy:symlink
    run("cd {{deploy_path}} && ln -sfn {{release_path}} current");
    run("cd {{deploy_path}} && rm release");
    
    ?>
    

    release 的时候,它是先删除再创建,是一个两步的非原子操作,在 symlink 的时候,看上去「ln -sfn」是单步原子操作,实际上也是错误的:

    shell> strace ln -sfn releases/foo current
    symlink("releases/foo", "current")      = -1 EEXIST (File exists)
    unlink("current")                       = 0
    symlink("releases/foo", "current")      = 0
    

    通过 strace 我们能清晰的看到,虽然表面上使用「ln -sfn」是一步操作,但是内部依然是按照先删除再创建的逻辑执行的,实际上这里应该搭配使用「ln & mv」

    shell> ln -sfn releases/foo current.tmp
    shell> mv -fT current.tmp current
    

    先通过 ln 创建一个临时的软链接,再通过 mv 实现原子操作,此时如果使用 strace 监控,会发现 mv「T」 选项实际上仅仅执行了一个 rename 操作,所以是原子的。

    BTW:在使用「ln -sfn」前后,如果使用 stat 查看新旧文件的 inode 的话,可能会发现它们拥有一样的 inode 值,看上去和我们的结论相悖,其实不然,实际上只是复用删除值而已(如果想验证,注意 Linux 会复用,Mac 不会复用)。

    据说一千个人的心中就有一千个哈姆雷特,不过我希望所有的 PHP 程序员在发布 PHP 代码的时候都能采用一种方法,那就是本文介绍的方法,正确的方法。

    原文转自老王的火丁笔记,原文地址:如何正确发布PHP代码 ;如有侵权请告知删除。

    通过求余操作,定位当前key的在slots数组中的位置: cache->slots[key.h % cache->num_slots];
    在定位到slots数组中的位置后,遍历当前key对应的slot链表,如果存在slot的key和要写入的key匹配或slot过期,清除当前slot。
    在最后一个slot的后面插入新的slot。
    **二、APC模块安装

    A.WINDOWS下安装APC
    **第一步:下载php_apc.dll 在 要与php版本对应 将php_apc.dll放入你的ext目录
    第二步:让php.ini支持apc扩展模块。 然后打开php.ini 加入:

    复制代码 代码如下:

    extension=php_apc.dll
    apc.rfc1867 = on
    apc.max_file_size = 100M
    upload_max_filesize = 100M
    post_max_size = 100M
    //以上参数可自己定义

    第三步:检查是否支持PHP APC apc_store apc_fetch
    查看phpinfo中是否有apc相关项

    B.LIUNX下安装APC
    第一步:下载和安装
    wget
    tar -zxvf APC-3.1.8.tgz cd APC-3.1.8
    /usr/local/php/bin/phpize
    ./configure --enable-apc --enable-mmap --enable-apc-spinlocks --disable-apc-pthreadmutex --with-php-config=/usr/local/php/bin/php-config
    make
    sudo make install
    第二步:配置APC
    在/usr/local/php/etc/php.ini 加入以下配置项:

    复制代码 代码如下:

    extension = "apc.so" ;
    ;APC setting
    apc.enabled = 1
    apc.shm_segments = 1
    apc.shm_size = 64M
    apc.optimization = 1
    apc.num_files_hint = 0
    apc.ttl = 0
    apc.gc_ttl = 3600
    apc.cache_by_default = on

    第三步:检查安装是否成功
    重启apache 或者 /usr/local/php/sbin/php-fpm restart
    查看phpinfo中是否有apc相关项
    三、配置参数详解和使用总结
    1).APC模块的参数配置详解

    复制代码 代码如下:

    apc.enabled  布尔型
    apc.enabled 可以被设成 0 来禁用 APC。这主要是有用的,当 APC 被静态编译入 PHP 时,因为没有其它方法来禁用它(当编译为 DSO 的时候,可以将 php.ini 中的 extension 行注释掉)。

    apc.shm_segments  整型
    对编译缓存分配共享内存块的数量。如果APC用光了共享内存,而且你已经设置apc.shm_size为系统允许的最大值的情况下,你可以试着去提高这个参数的值。

    apc.shm_size  整型
    每个共享内存块的大小是以MB为单位的。在默认情况下,一些系统(包括大多数BSD变种系统)的共享内存块的大小限制的很低。

    apc.optimization  整型
    优化等级。设为0则禁用优化,越高的值使用越强有力的优化。期待有适度的速度上的改进。这个还是实验性质的。

    apc.num_files_hint  整型
    对在你的Web服务器上被包含和请求的不同的源文件的数量的提示。如果你无法确定,设置为0或者省略;这个设置主要可能用于有成千的源文件的站点。

    apc.ttl  整型
    当一个缓存条目在缓存区的位置被另一个条目需要时,我们需要考虑的是这个缓存条目在缓存区的位置被允许空闲的秒数。将这个参数设置为0意味着你的缓存可能充满不新鲜的条目,同时导致新的条目无法被缓存。

    apc.gc_ttl  整型
    缓存条目在垃圾收集列表中存活的秒数。这个值提供了出错保护在执行一个缓存源文件,而同时服务器进程死了的事件中。如果那个源文件被修改,内存分配给旧版本的缓存条目将不会被回收,直到这个参数设定的TTL值到的时候。设置为0就是禁止这个特性。

    apc.cache_by_default  布尔型
    默认为On,但可以被设置为Off并和以加号开头的apc.filters配合使用,文件仅仅在匹配过滤器时才被缓存。

    apc.filters  字符串
    一个以逗号分割的POSIX扩展正则表达式的列表。如果任何模式匹配源文件名,这个文件将不会被缓存。注意用来匹配的文件名是传递给 include/require 的文件名,而不是绝对路径。如果正则表达式的第一个字符是 ,则这个表达式就意味着任何匹配表达式的文件将会被缓存,如果第一个字符是 - 则任何匹配都不会被缓存。 - 是默认值,所以可以被省略。

    apc.mmap_file_mask  字符串 (这段实在不太懂,所以没有翻译)
    If compiled with MMAP support by using --enable-mmap this is the mktemp-style file_mask to pass to the mmap module for determing whether your mmap'ed memory region is going to be file-backed or shared memory backed. For straight file-backed mmap, set it to something like/tmp/apc.XXXXXX (exactly 6 Xs). To use POSIX-style shm_open/mmap put a .shm somewhere in your mask. e.g. /apc.shm.XXXXXX You can also set it to /dev/zero to use your kernel's/dev/zero interface to anonymous mmap'ed memory. Leaving it undefined will force an anonymous mmap.

    apc.slam_defense  整型
    在非常繁忙的服务器上,无论你启动服务还是修改文件,你都会导致一种多进程都试图在同一个时间缓存同一个文件的竞争。这个选项设置了进程跳过试图去缓存一个未被缓存的文件的百分比。或者可以把这个想象成一个单独进程跳过缓存的机率。例如,设置apc.slam_defense为75就意味着进程有75%的机率不去缓存未被缓存的文件。所以,设置的越高,越能减少缓存的碰撞机率。设置为0则禁用这个特性。

    apc.file_update_protection  整型
    当你在一个运行着的服务器上修改文件时,你应该执行原子操作。也就是,先写一个临时文件,当写完后再重命名(mv)这个文件到它的最终位置。许多文本编辑器,cp,tar和其他一些类似程序都不是这样操作的。这就意味着有机会去访问和(缓存)文件,当这个文件还在被写的情况下。apc.file_update_protection的设置使得缓存标记新文件的延迟。默认值是2,意味着如果发现文件的修改时间距离访问时间不到2秒,文件将不会被缓存。访问写到一半的文件的不幸用户将会看到离奇的情况,但至少这种情况不是持续的。如果你确信你经常使用原子操作来更新你的文件,你可以关闭这个保护通过设置这个参数为0。如果你的系统充满io操作,并导致更新程序花费超过2秒,你可能需要去增大这个值。

    apc.enable-cli  整型
    大多是为了测试和调试。为CLI版本的PHP开启动APC功能。一般来说,你将不会想到为每一个CLI请求创建,移植和放弃APC的缓存,但对于各种测试情况,这是很容易的为了CLI版本开启APC。

    2).使用总结
    1,使用Spinlocks锁机制,能够达到最佳性能。
    2,APC提供了apc.php,用于监控与管理APC缓存。不要忘记修改管理员名和密码
    3,APC默认通过mmap匿名映射创建共享内存,缓存对象都存放在这块”大型”的内存空间。由APC自行管理该共享内存
    4,我们需要通过统计调整apc.shm_size、apc.num_files_hints、apc.user_entries_hint的值。直到最佳
    5,好吧,我承认apc.stat = 0 可以获得更佳的性能。要我做什么都可以接受.
    6,PHP预定义常量,可以使用apc_define_constants()函数。不过据APC开发者介绍说pecl hidef性能更佳,抛异define吧,它是低效的。
    7,函数apc_store(),对于系统设置等PHP变量,生命周期是整个应用(从httpd守护进程直到httpd守护进程关闭),使用APC比Memcached会更好。必竟不要经过网络传输协议tcp。
    8,APC不适于通过函数apc_store()缓存频繁变更的用户数据,会出现一些奇异现象。

    四、使用实例 下面引用initphp框架的APC缓存类

    复制代码 代码如下:

    <?php
    if
    class Apc{

        /**
         * Apc缓存-设置缓存
         * 设置缓存key,value和缓存时间
         * @param  string $key   KEY值
         * @param  string $value 值
         * @param  string $time  缓存时间
         */
        public function set_cache($key, $value, $time = 0) { 
            if ($time == 0) $time = null; //null情况下永久缓存
            return apc_store($key, $value, $time);;
        }

        
        /**
         * Apc缓存-获取缓存
         * 通过KEY获取缓存数据
         * @param  string $key   KEY值
         */
        public function get_cache($key) {
            return apc_fetch($key);
        }

        /**
         * Apc缓存-清除一个缓存
         * 从memcache中删除一条缓存
         * @param  string $key   KEY值
         */
        public function clear($key) {
            return apc_delete($key);
        }

        /**
         * Apc缓存-清空所有缓存
         * 不建议使用该功能
         * @return
         */
        public function clear_all() {
            apc_clear_cache('user'); //清除用户缓存
            return apc_clear_cache(); //清楚缓存
        }

        /**
         * 检查APC缓存是否存在
         * @param  string $key   KEY值
         */
        public function exists($key) {
            return apc_exists($key);
        }

        /**
         * 字段自增-用于记数
         * @param string $key  KEY值
         * @param int    $step 新增的step值
         */
        public function inc($key, $step) {
            return apc_inc($key, (int) $step);
        }

        /**
         * 字段自减-用于记数
         * @param string $key  KEY值
         * @param int    $step 新增的step值
         */
        public function dec($key, $step) {
            return apc_dec($key, (int) $step);
        }

        /**
         * 返回APC缓存信息
         */
        public function info() {
            return apc_cache_info();
        }
    }

    您可能感兴趣的文章:

    • PHP中加速、缓存扩展的区别和作用详解(eAccelerator、memcached、xcache、APC )
    • 使用Xcache缓存器加速PHP网站的配置方法
    • 在Win7 中为php扩展配置Xcache
    • Linux下安装php加速软件Xcache的方法
    • ubuntu下编译安装xcache for php5.3 的具体操作步骤
    • CentOS 6.3下安装PHP xcache扩展模块笔记
    • 教你一步一步在linux中正确的安装Xcache加速php
    • 配置eAccelerator和XCache扩展来加速PHP程序的执行
    • PHP中opcode缓存简单用法分析
    • 利用php的ob缓存机制实现页面静态化方法
    • PHP缓存工具XCache安装与使用方法详解

    本文由新葡亰496net发布于服务器网络,转载请注明出处:新葡亰496net使用详解,36中APC与APCu的对比与感觉

    关键词:

上一篇:BSM怎么样一败涂地,顾客的IT业务处理

下一篇:没有了