目录
PHP缓存之模块缓存(APC)
首页 php教程 php手册 PHP缓存之模块缓存(APC)

PHP缓存之模块缓存(APC)

Jun 13, 2016 am 09:26 AM
模块 缓存

PHP缓存之模块缓存(APC)

APC是Alternative PHP Cache的简称,是 PHP 的一个免费公开的优化代码缓存。它用来提供免费,公开并且强健的架构来缓存和优化 PHP 的中间代码。

1、PHP配置APC

开启APC模块,需要将 extension=php_apc.dll 前面的注释去掉即可。
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

类型:字符串
如果使用–enable-mmap(默认启用)为APC编译了MMAP支持,这里的值就是传递给mmap模块的mktemp风格的文件掩码(建议值为”/tmp/apc.XXXXXX”)。该掩码用于决定内存映射区域是否要被file-backed或者shared memory backed。对于直接的file-backed内存映射,要设置成”/tmp/apc.XXXXXX”的样子(恰好6个X)。要使用POSIX风格的shm_open/mmap就需要设置成”/apc.shm.XXXXXX”的样子。你还可以设为”/dev/zero”来为匿名映射的内存使用内核的”/dev/zero”接口。不定义此指令则表示强制使用匿名映射。


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。


案例:
apc.enabled = 1
apc.shm_segments = 1
apc.shm_size = 64
apc.optimization = 0
apc.num_files_hint = 1000
apc.ttl = 0
apc.gc_ttl = 3600
apc.cache_by_default = On
apc.slam_defense = 0
apc.file_update_protection = 2
apc.enable_cli = 0
apc.stat=0

2、APC缓存案例

<?php
class Cache_Driver{


    //获取缓存信息
	public function get($id)
	{
	   $data = apc_fetch($id);
	   if (!is_array($data))
	   {
            $data = apc_fetch($id);
       }

		return (is_array($data)) ? $data[0] : FALSE;
	}
	//设置缓存信息
	public function set($id, $data, $ttl = 60)
	{
		return apc_store($id, array($data, time(), $ttl), $ttl);
	}
	//删除key值对应的缓存
	public function delete($id)
	{
		return apc_delete($id);
	}
}
?>
登录后复制


本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1664
14
CakePHP 教程
1423
52
Laravel 教程
1317
25
PHP教程
1268
29
C# 教程
1242
24
WLAN扩展模块已停止[修复] WLAN扩展模块已停止[修复] Feb 19, 2024 pm 02:18 PM

如果您的Windows计算机上的WLAN扩展模块出现问题,可能会导致您与互联网断开连接。这种情况常常让人感到困扰,但幸运的是,本文提供了一些简单的建议,可以帮助您解决这个问题,让您的无线连接重新正常运行。修复WLAN扩展模块已停止如果您的Windows计算机上的WLAN可扩展性模块已停止工作,请按照以下建议进行修复:运行网络和Internet故障排除程序禁用并重新启用无线网络连接重新启动WLAN自动配置服务修改电源选项修改高级电源设置重新安装网络适配器驱动程序运行一些网络命令现在,让我们来详细看

WLAN可扩展性模块无法启动 WLAN可扩展性模块无法启动 Feb 19, 2024 pm 05:09 PM

本文详细介绍了解决事件ID10000的方法,该事件表明无线局域网扩展模块无法启动。在Windows11/10PC的事件日志中可能会显示此错误。WLAN可扩展性模块是Windows的一个组件,允许独立硬件供应商(IHV)和独立软件供应商(ISV)为用户提供定制的无线网络特性和功能。它通过增加Windows默认功能以扩展本机Windows网络组件的功能。在操作系统加载网络组件时,WLAN可扩展性模块作为初始化的一部分启动。如果无线局域网扩展模块遇到问题无法启动,您可能会在事件查看器的日志中看到错误消

视频文件存储在浏览器缓存中的位置在哪里? 视频文件存储在浏览器缓存中的位置在哪里? Feb 19, 2024 pm 05:09 PM

浏览器缓存视频在哪个文件夹在日常使用互联网浏览器时,我们经常会观看各种在线视频,比如在YouTube上看音乐视频或在Netflix上观看电影等。而这些视频在加载过程中会被浏览器缓存下来,以便日后再次播放时能够快速加载。那么问题来了,这些缓存的视频实际上存储在哪个文件夹中呢?不同浏览器的缓存视频文件夹保存位置是不同的。下面我们将分别介绍几种常见的浏览器以及它们

Linux如何查看和刷新dns缓存 Linux如何查看和刷新dns缓存 Mar 07, 2024 am 08:43 AM

DNS(DomainNameSystem)是互联网中用于将域名转换为对应IP地址的系统。在Linux系统中,DNS缓存是一种将域名和IP地址的映射关系存储在本地的机制,可提高域名解析速度,减轻DNS服务器的负担。DNS缓存允许系统在之后访问相同域名时快速检索IP地址,而不必每次都向DNS服务器发出查询请求,从而提高网络性能和效率。本文不念将和大家一起探讨如何在Linux上查看和刷新DNS缓存,以及相关的详细内容和示例代码。DNS缓存的重要性在Linux系统中,DNS缓存扮演着关键的角色。它的存在

加速你的应用程序:Guava缓存的简易指南 加速你的应用程序:Guava缓存的简易指南 Jan 31, 2024 pm 09:11 PM

Guava缓存入门指南:加速你的应用程序Guava缓存是一个高性能的内存缓存库,它可以显着提高应用程序的性能。它提供了多种缓存策略,包括LRU(最近最少使用)、LFU(最近最不经常使用)和TTL(生存时间)。 1.安装Guava缓存在你的项目中添加Guava缓存库的依赖。 com.goog

会对 HTML 文件进行缓存吗 会对 HTML 文件进行缓存吗 Feb 19, 2024 pm 01:51 PM

标题:HTML文件的缓存机制及代码示例导语:在编写网页时,我们经常会遇到浏览器缓存的问题。本文将详细介绍HTML文件的缓存机制,并提供一些具体的代码示例,以帮助读者更好理解和应用这一机制。一、浏览器缓存原理在浏览器中,每当访问一个网页时,浏览器会先检查缓存中是否有该网页的副本。如果有,则直接从缓存获取网页内容,这就是浏览器缓存的基本原理。浏览器缓存机制的好处

CPU、内存、缓存的关系详细解释! CPU、内存、缓存的关系详细解释! Mar 07, 2024 am 08:30 AM

CPU(中央处理器)、内存(随机存取存储器)以及缓存之间存在着紧密的相互作用,它们合力构成了计算机系统的关键组成部分。它们之间的协调配合,确保了计算机的正常运行和高效性能。CPU作为计算机的大脑,负责执行各种指令和数据处理;内存则用于临时存储数据和程序,提供了快速的读写访问速度;而缓存则起到了缓冲作用,加快了数据的访问速度,提高了计算机的CPU是计算机的核心组件,负责执行各种指令、算术运算和逻辑操作。它被称为计算机的"大脑",承担着处理数据和执行任务的重要角色。内存是计算机中一种重要的存储设备,

PHP APCu 的高级用法:解锁隐藏的力量 PHP APCu 的高级用法:解锁隐藏的力量 Mar 01, 2024 pm 09:10 PM

PHPAPCu(替代php缓存)是一个加速PHP应用程序的opcode缓存和数据缓存模块。理解其高级功能对于充分利用其潜力至关重要。1.批量操作:APCu提供批量操作方法,可同时处理大量键值对。这对于大规模缓存清除或更新非常有用。//批量获取缓存键$values=apcu_fetch(["key1","key2","key3"]);//批量清除缓存键apcu_delete(["key1","key2","key3"]);2.设置缓存过期时间:APCu允许您为缓存项设置过期时间,以便在指定时间后自

See all articles