• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 位置: php 中文手册 -> PECL扩展库

    apc库( PHP缓存机制)

    此PECL 扩展未与 PHP 捆绑。安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。

    PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。Note: 在Windows上,APC需要一个临时目录,并且Web服务器对这个目录可写,APC会检测TMP,TEMP,USERPROFILE这些Windows的环境变量,如果这些都没有,会检查系统文件夹下的WINDOWS目录

    sudo apt-get install php-apc
    sudo /etc/init.d/apache2 restart
    Was enough for me. I use Ubuntu Server 8.10.
    

    运行时配置

    这些函数的行为受php.ini中的设置影响。

    尽管默认的 APC 设定对于大多数安装已经没问题,但专业人员应考虑调整以下参数。

    APC有两个主要的配置选项。第一,多少内存将被分配给APC;第二,每次请求APC是否检查文件修改。两个ini选项分别控制这些设置apc.shm_sizeapc.stat.就这两项配置仔细阅读下面的章节。

    一旦服务器运行起来了,apc.php脚本可以拷贝到一个可以通过浏览器访问到的Web目录中,通过浏览器访问这个脚本会得到APC工作状态的详细分析,如果在PHP中启用了GD扩展,它甚至会显示一些有趣的图表。当然,首要的事情是要确保真的缓存了文件。 如果APC运行了,缓存完全统计数目 (在左上角)将显示缓存的命中率并且清除在最后apc.ttl秒内没有被访问的缓存。 这个数字使缓存的最小化的很好配置。如果缓存不断的被填充和清除,这将影响缓存的效果和脚本的性能。减少这个数字的最好方式就是给APC分配足够多的内存。除此之外, 可以通过apc.filters缓存更少的脚本。

    APC配置选项
    名字默认可修改范围更新日志
    apc.enabled"1"PHP_INI_SYSTEMPHP_INI_SYSTEM in APC 2. PHP_INI_ALL in APC <= 3.0.12.
    apc.shm_segments"1"PHP_INI_SYSTEM
    apc.shm_size"30"PHP_INI_SYSTEM
    apc.optimization"0"PHP_INI_ALLPHP_INI_SYSTEM in APC 2. Removed in APC 3.0.13.
    apc.num_files_hint"1000"PHP_INI_SYSTEM
    apc.user_entries_hint"4096"PHP_INI_SYSTEMAvailable since APC 3.0.0.
    apc.ttl"0"PHP_INI_SYSTEMAvailable since APC 3.0.0.
    apc.user_ttl"0"PHP_INI_SYSTEMAvailable since APC 3.0.0.
    apc.gc_ttl"3600"PHP_INI_SYSTEM
    apc.cache_by_default"1"PHP_INI_ALLPHP_INI_SYSTEM in APC <= 3.0.12. Available since APC 3.0.0.
    apc.filtersNULLPHP_INI_SYSTEM
    apc.mmap_file_maskNULLPHP_INI_SYSTEM
    apc.slam_defense"0"PHP_INI_SYSTEMAvailable since APC 3.0.0.
    apc.file_update_protection"2"PHP_INI_SYSTEMAvailable since APC 3.0.6.
    apc.enable_cli"0"PHP_INI_SYSTEMAvailable since APC 3.0.7.
    apc.max_file_size"1M"PHP_INI_SYSTEMAvailable since APC 3.0.7.
    apc.use_request_time"1"PHP_INI_ALLAvailable since APC 3.1.3.
    apc.stat"1"PHP_INI_SYSTEMAvailable since APC 3.0.10.
    apc.write_lock"1"PHP_INI_SYSTEMAvailable since APC 3.0.11.
    apc.report_autofilter"0"PHP_INI_SYSTEMAvailable since APC 3.0.11.
    apc.include_once_override"0"PHP_INI_SYSTEMAvailable since APC 3.0.12.
    apc.rfc1867"0"PHP_INI_SYSTEMAvailable since APC 3.0.13.
    apc.rfc1867_prefix"upload_"PHP_INI_SYSTEM
    apc.rfc1867_name"APC_UPLOAD_PROGRESS"PHP_INI_SYSTEM
    apc.rfc1867_freq"0"PHP_INI_SYSTEM
    apc.rfc1867_ttl"3600"PHP_INI_SYSTEMAvailable since APC 3.1.1.
    apc.localcache"0"PHP_INI_SYSTEMAvailable since APC 3.0.14.
    apc.localcache.size"512"PHP_INI_SYSTEMAvailable since APC 3.0.14.
    apc.coredump_unmap"0"PHP_INI_SYSTEMAvailable since APC 3.0.16.
    apc.stat_ctime"0"PHP_INI_SYSTEMAvailable since APC 3.0.13.
    apc.preload_pathNULLPHP_INI_SYSTEMAvailable since APC 3.1.1.
    apc.file_md5"0"PHP_INI_SYSTEMAvailable since APC 3.1.1.
    apc.canonicalize"1"PHP_INI_SYSTEMAvailable since APC 3.1.1.
    apc.lazy_functions0PHP_INI_SYSTEMAvailable since APC 3.1.3.
    apc.lazy_classes0PHP_INI_SYSTEMAvailable since APC 3.1.3.

    APCIterator类

    (PECL apc >= 3.1.1)

    APCIterator 类使得遍历大容量APC缓存更容易,这是很有帮助的因为它允许同时获取已经定义的每个被锁定实例的条目数,因此它释放的其他活动的缓存锁,而不是阻碍整个缓存以完成获取100(默认)个缓存数据的迭代,在大缓存条目。 此外,使用正则匹配效率更高,因为它被改为C级别的实现。

    APCIterator implements Iterator , Traversable 
    {
    	/* Methods */
    	public __construct ( string $cache [, mixed $search = NULL [, int $format = APC_ITER_ALL [, int $chunk_size = 100 [, int $list = APC_LIST_ACTIVE ]]]] )
    	public current ( void ) : mixed
    	public getTotalCount ( void ) : int
    	public getTotalHits ( void ) : int
    	public getTotalSize ( void ) : int
    	public key ( void ) : string
    	public next ( void ) : void
    	public rewind ( void ) : void
    	public valid ( void ) : void
    }