apc php7,深入解析php之apc

apc定义:apc是一个开放自由的php opcode缓存。它的目标是提供一个自由、开放和健全的框架,用于缓存和优化php中间代码。

apc常用函数:

1.apc_clear_cache() 清楚apc缓存内容

2.apc_define_constants(string key,array constants,[,bool case_sensitive])   将数组constants以常量加入缓存

3.apc_load_constants(string key) 取出常量缓存

4.apc_store(string key,mixed var [, int ttl])   在缓存中保存数据

5.apc_fetch(string key) 获取apc_store保存的缓存数据

6.apc_delete(string key) 删除apc_store保存的内容

7.apc_add(string key,mixd var [, int ttl])  缓存一个变量到数据存储(只在变量之前没有被存储的情况)

8.apc_exists(mix keys) 检查是否有一个或者多个apc键名存在

9.apc_delete_file(mixed keys) 从opcode缓存中删除给定文件的缓存

10.apc_compile_file(string filename [,bool atmic=true]) 绕过filters的限制,缓存文件

11.apc_cache_info(string cache_type [,bool limited=false]) 获取缓存i型奶昔

注:apc_clear_cache只清除opcode缓存文件,apc_delete清楚缓存中的变量;预定义变量,可以使用apc_define_constants函数;php变量可以使用函数apc_store,使用apc比memcache会更好,不需要经过网络传输协议tcp;apc不适用于通过函数apc_store缓存频繁变更的用户数据,会出现一些奇异的现象;apc本身不支持分布式。

apc常用配置:1.多少内存将被分配给apc,ini选项apc.shm_size(integer)控制这个设置。默认为30M

2.每次请求apc是否检查文件修改,ini选项apc.stat控制这个设置,默认值为1,表示每次请求脚本时都减产脚本是否被更新,如果更新则自动重新编译和缓存编译后的内容,对性能有比例的影响,故这个设为0

3.通过ini选项apc.filters缓存更少的脚本

apc优点:1.使用spinlocks(自旋)锁机制,能够达到最佳性能

2.apc提供apc.php,用于监控和管理apc缓存。(注:修改管理员名和密码)

3.apc默认通过mmap匿名映射创建共享内存,缓存对象都存放在这块大型的内存空间。由apc自行管理该共享内存

4.调整apc.shm_size、apc.num_files_hints、apc.user_entires_hint的值到最佳

5.php预定义常量,可以使用apc _define——constants()函数。不过apc开发者说pecl hidef性能更加,抛弃define,它是低效的

6.apc_store,对于系统设置等PHP变量,生命周期是整个应用(从httpd守护进程到httpd守护进程关闭),使用apc比memcache更好。(不需要经过网络传输协议)

7.apc不适用于通过函数apc_store()缓存频繁变更用户数据,会出现一些奇异现象。

例:<?php

$constants = array('APC_FILE'=>'apc.php','AUTHOR'=>'tim');

apc_define_constants('memb',$constants );

apc_load_constants('memb');

//echo APC_FILE;

//echo AUTHOR;

if(!apc_fetch('time1')) apc_store('time1',time());

if(!apc_fetch('time2')) apc_store('time2',time(),2);

//echo apc_fetch('time1');

//echo apc_fetch('time2');

class a{

public function b(){echo 'success';}

}

apc_store('obj',new a());

$a = apc_fetch('obj');

//$a-b();

$ret = apc_exists(array('foo', 'donotexist', 'bar'));

//array(2) { ["foo"]=> bool(true) ["bar"]=> bool(true) }?>

补充详细配置说明:apc.cache_by_default = on

;sys

; 是否默认对所有文件启用缓冲。

; 若设为off并与以加号开头的apc.filters指令一起用,则文件仅在匹配过滤器时才被缓存。

apc.enable_cli = off

;sys

; 是否为cli版本启用apc功能,仅用于测试和调试目的才打开此指令。

apc.enabled = on

; 是否启用apc,如果apc被静态编译进php又想禁用它,这是唯一的办法。

apc.file_update_protection = 2

;sys

; 当你在一个运行中的服务器上修改文件时,你应当执行原子操作。

; 也就是先写进一个临时文件,然后将该文件重命名(mv)到最终的名字。

; 文本编辑器以及cp, tar 等程序却并不是这样操作的,从而导致有可能缓冲了残缺的文件。

; 默认值2 表示在访问文件时如果发现修改时间距离访问时间小于2 秒则不做缓冲。

; 那个不幸的访问者可能得到残缺的内容,但是这种坏影响却不会通过缓存扩大化。

; 如果你能确保所有的更新操作都是原子操作,那么可以用0 关闭此特性。

; 如果你的系统由于大量的io操作导致更新缓慢,你就需要增大此值。

apc.filters =

;sys

; 一个以逗号分隔的posix扩展正则表达式列表。

; 如果源文件名与任意一个模式匹配,则该文件不被缓存。

; 注意,用来匹配的文件名是传递给include/require的文件名,而不是绝对路径。

; 如果正则表达式的第一个字符是"+"则意味着任何匹配表达式的文件会被缓存,

; 如果第一个字符是"-"则任何匹配项都不会被缓存。"-"是默认值,可以省略掉。

apc.ttl = 0

;sys

; 缓存条目在缓冲区中允许逗留的秒数。0 表示永不超时。建议值为7200~36000。

; 设为0 意味着缓冲区有可能被旧的缓存条目填满,从而导致无法缓存新条目。

apc.user_ttl = 0

;sys

; 类似于apc.ttl,只是针对每个用户而言,建议值为7200~36000。

; 设为0 意味着缓冲区有可能被旧的缓存条目填满,从而导致无法缓存新条目。

apc.gc_ttl = 3600

;sys

; 缓存条目在垃圾回收表中能够存在的秒数。

; 此值提供了一个安全措施,即使一个服务器进程在执行缓存的源文件时崩溃,

; 而且该源文件已经被修改,为旧版本分配的内存也不会被回收,直到达到此ttl值为止。

; 设为零将禁用此特性。

apc.include_once_override = off

;sys

; 关于该指令目前尚无说明文档,参见:http://pecl.php.net/bugs/bug.php?id=8754

; 请保持为off,否则可能导致意想不到的结果。

apc.max_file_size = 1m

;sys

; 禁止大于此尺寸的文件被缓存。

apc.mmap_file_mask =

;sys

; 如果使用–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.num_files_hint = 1000

;sys

; web服务器上可能被包含或被请求的不同源文件的大致数量(建议值为1024~4096)。

; 如果你不能确定,则设为0 ;此设定主要用于拥有数千个源文件的站点。

apc.optimization = 0

; 优化级别(建议值为0 ) 。

; 正整数值表示启用优化器,值越高则使用越激进的优化。

; 更高的值可能有非常有限的速度提升,但目前尚在试验中。

apc.report_autofilter = off

;sys

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

apc.shm_segments = 1

;sys

; 为编译器缓冲区分配的共享内存块数量(建议值为1)。

; 如果apc耗尽了共享内存,并且已将apc.shm_size指令设为系统允许的最大值,

; 你可以尝试增大此值。

apc.shm_size = 30

;sys

; 每个共享内存块的大小(以mb为单位,建议值为128~256)。

; 有些系统(包括大多数bsd变种)默认的共享内存块大小非常少。

apc.slam_defense = 0

;sys(反对使用该指令,建议该用apc.write_lock指令)

; 在非常繁忙的服务器上,无论是启动服务还是修改文件,

; 都可能由于多个进程企图同时缓存一个文件而导致竞争条件。

; 这个指令用于设置进程在处理未被缓存的文件时跳过缓存步骤的百分率。

; 比如设为75表示在遇到未被缓存的文件时有75%的概率不进行缓存,从而减少碰撞几率。

; 鼓励设为0 来禁用这个特性。

apc.stat = on

;sys

; 是否启用脚本更新检查。

; 改变这个指令值要非常小心。

; 默认值on 表示apc在每次请求脚本时都检查脚本是否被更新,

; 如果被更新则自动重新编译和缓存编译后的内容。但这样做对性能有不利影响。

; 如果设为 off 则表示不进行检查,从而使性能得到大幅提高。

; 但是为了使更新的内容生效,你必须重启web服务器。

; 这个指令对于include/require的文件同样有效。但是需要注意的是,

; 如果你使用的是相对路径,apc就必须在每一次include/require时都进行检查以定位文件。

; 而使用绝对路径则可以跳过检查,所以鼓励你使用绝对路径进行include/require操作。

apc.user_entries_hint = 100

;sys

; 类似于num_files_hint指令,只是针对每个不同用户而言。

; 如果你不能确定,则设为0 。

apc.write_lock = on

;sys

; 是否启用写入锁。

; 在非常繁忙的服务器上,无论是启动服务还是修改文件,

; 都可能由于多个进程企图同时缓存一个文件而导致竞争条件。

; 启用该指令可以避免竞争条件的出现。

apc.rfc1867 = off

;sys

; 打开该指令后,对于每个恰好在file字段之前含有apc_upload_progress字段的上传文件,

; apc都将自动创建一个upload_的用户缓存条目(就是apc_upload_progress字段值)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/335461.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Apache NetBeans?

在JavaOne之前的几天和几周内发布有关Java世界的重要公告是很常见的。 考虑到这一点&#xff0c;不足为奇的是&#xff0c;我们在下周开始的JavaOne 2016之前看到了一些与Java有关的重要公告。 马克莱因霍尔德 &#xff08; Mark Reinhold &#xff09;的JDK 9计划变更提案是一…

已经创建了AWS EC2实例,Linux系统默认没有root用户,那么如何创建root用户并更改为root用户登录呢?

文章目录1. 如何创建ROOT及设置密码2.更改登陆方式&#xff0c;采用ROOT用户登陆a. 编辑EC2实例的ssh登录方式b. 再编辑authorized_keys文件&#xff0c;将ssh-rsa 前面的文字全部删除&#xff0c;确保ssh-rsa没有任何文字&#xff0c;包括空格。3. 重新登陆对于刚创建AWS EC2实…

输入一个正整数求所有素数因子_一起来聊聊素数的两个性质

素数(prime number)&#xff0c;又称质数&#xff0c;有无限个。定义&#xff1a;在大于1的自然数中&#xff0c;除了1和它本身以外不再有其他因数。来介绍两个简单的性质&#xff1a;质数的个数是无穷的。欧几里得的《几何原本》曾有一经典证明&#xff0c;用的是反证法。当然…

基于docker微服务架构_使用基于微服务的流架构更好地进行大规模的复杂事件处理(第1部分)...

基于docker微服务架构基于微服务的流架构与开源规则引擎相结合&#xff0c;使实时业务规则变得容易 这篇文章旨在详细介绍我将OSS业务规则引擎与Kafka风格的现代流消息传递系统集成在一起的项目。 该项目的目标&#xff08;即众所周知的复杂事件处理&#xff08;CEP&#xff0…

php怎样下载网上的文件,php怎样实现文件下载

用head() 和 fread()函数把文件直接输出到浏览器。具体代码&#xff1a;<?php $file_name "down";$file_name "down.zip"; //下载文件名$file_dir "./down/"; //下载文件存放目录//检查文件是否存在if (! file_exists ( $file_dir . $fil…

Windows 系统下,移动硬盘无法识别怎么修复?

方案1&#xff1a;移动硬盘没有驱动器号 有时移动硬盘插入计算机&#xff0c;但无法在我的计算机上显示。此时&#xff0c;可能只是因为移动硬盘没有驱动器号。 右键单击此计算机&#xff08;计算机&#xff09;&#xff0c;然后单击[管理]将其打开。 点击左边的[磁盘管理]&a…

欢乐鼠标自动点击器_使用ESP32 DIY蓝牙自动点击器,滑屏器

前言因为爱薅羊毛&#xff0c;然后正好最近免费车一趟接一趟&#xff0c;咪咕开完&#xff0c;京东开&#xff0c;京东开完掌阅开&#xff0c;下一个不知道是谁&#xff0c;&#xff0c;&#xff0c;&#xff0c;可我又不是什么很有耐心的人&#xff0c;虽然我喜欢看书&#xf…

java单词按字典排序_最终Java日志字典:开发人员最常记录的单词是什么?

java单词按字典排序最终的记录字典&#xff0c;或者&#xff1a;我们记录的最常见单词是什么&#xff1f; 日志文件是调试应用程序的最常用方法&#xff0c;当解决错误时&#xff0c;它们肯定可以引导我们朝正确的方向发展。 但是&#xff0c;大多数日志文件每天都会增加一百万…

winscp使用密钥登录远程linux系统

说明&#xff1a; WinSCP是一个Windows环境下使用SSH的开源图形化SFTP客户端。同时putty也是一个开源连接ssh的windows客户端&#xff0c;本文介绍puttyWinSCP密钥对登录linux服务器。 1. 创建密钥对 安装openssl yum –y install openssl #openssl一般服务器都会预装 创建密…

php api 实例maccms,苹果cmsV10API接口说明

api接口仅供提供数据&#xff0c;可以直接在苹果CMS后台联盟采集中加入-并提供给他人采集。联盟资源分配唯一标识ID&#xff0c;用来区别绑定分类&#xff0c;这个ID一般由苹果CMS官方提供&#xff0c;不可随意修改设置&#xff0c;否则造成入库分类错乱。视频接口同时支持老板…

dml语句包括哪些_聊聊MySQL基本操作DDL,DML,DQL,DCL

本篇文章来回顾一下MySQL的基本操作之DDL&#xff0c;DML&#xff0c;DQL&#xff0c;DCL&#xff0c;每种操作都有各自不同的语法&#xff0c;常用的操作汇总如下。一、DDL-数据定义语言作用&#xff1a;数据定义语言主要用来定义数据库中的各类对象&#xff0c;包括用户、库、…

Windows 系统下使用 putty 客户端通过 SSH 远程连接 AWS 服务器

找到在购买亚马逊的AWS服务器时保存的密钥文件&#xff08;假设为abc.pem&#xff09;。 打开PuTTYgen&#xff0c;如下图&#xff0c;点击图中1处的“load”,找到abc.pem文件所在的位置&#xff0c;并选择abc.pem&#xff0c;确定&#xff1b; 然后&#xff0c;选择图中2处…

ip integrator_使用Oracle Data Integrator(和Kafka / MapR流)完善Lambda体系结构

ip integrator“ Lambda体系结构是一种数据处理体系结构&#xff0c;旨在通过利用批处理和流处理方法来处理大量数据。 这种体系结构方法尝试通过使用批处理提供批处理数据的全面而准确的视图&#xff0c;同时使用实时流处理提供在线数据的视图来平衡延迟 &#xff0c; 吞吐量和…

php 如何获取函数类型,PHP如何使用gettype()函数判断变量的类型?

gettype()函数是PHP中的一个内置函数&#xff0c;用于获取变量的类型&#xff1b;它可用于检查现有变量的类型。下面本篇文章就来给大家介绍一下gettype()函数&#xff0c;希望对大家有所帮助。【视频教程推荐&#xff1a;PHP教程】基本语法string gettype ( $var )参数&#x…

qfile 创建文件_Qt之二进制文件读写

点击上方“Qt学视觉”&#xff0c;选择“星标”公众号重磅干货&#xff0c;第一时间送达想要学习的同学们还请认真阅读每篇文章&#xff0c;相信你一定会有所收获除了文本文件之外&#xff0c;其他需要按照一定的格式定义读写的文件都称为二进制文件&#xff0c;每种格式的二进…

cloud foundry_实际的Reactor操作–检索Cloud Foundry应用程序的详细信息

cloud foundryCF-Java-Client是一个库&#xff0c;可通过程序访问Cloud Foundry Cloud Controller API 。 它建立在Project Reactor之上&#xff0c;它是Reactive Streams规范的实现&#xff0c;并且使用此库在Cloud Foundry环境中做一些实际的事情是一个有趣的练习。 考虑一个…

iis开启php验证码,php结合GD库实现中文验证码的简单方法

前言上一次写了一个常见的验证码&#xff0c;现在玩一下中文的验证码&#xff0c;顺便升级一下写的代码流程基本差不多先看GD库开启了没生成中文5位验证码开始画图画干扰素生成图形完事生成中文验证码//小小心机$hanzi "如果觉得写得还可以的话互相关注报团取暖交流经验来…

Linux 系统关于应该把程序安装在目录 /usr 还是目录 /usr/local 下的思考

对于一个以 LFS(Linux From Scratch 大意&#xff1a;自己做出来的 Linux) 为基础的系统来说&#xff0c;这是一个没有明确答案的问题。什么是 LFS&#xff1f; 在传统的 Unix 系统中&#xff0c;/usr 通常只包含系统发行时自带的程序&#xff0c;而 /usr/local 则是本地系统管…

数据结构设计_合并多种疾病,如何设计数据结构?

如果一个患者合并多种疾病或应用多种药物&#xff0c;如何设计数据结构&#xff1f;例如病史&#xff0c;建议设计成多选题。如果未患病&#xff0c;只需点一次“全无”&#xff0c;操作简单。如果选了全无&#xff0c;其他选框系统自动关闭&#xff0c;就不能再后面的选项了&a…

java ee的小程序_用微服务和容器替换旧版Java EE应用程序服务器

java ee的小程序Lightbend最近对2000多个JVM开发人员进行了一项调查&#xff0c;结果刚刚发布。 开展该调查的目的是发现&#xff1a;发展趋势与IT基础架构趋势之间的相关性&#xff0c;处于数字化转型前沿的组织如何使他们的应用程序现代化以及当今对新兴开发人员技术最为关注…