1、PHP执行

    • Parse。语法分析阶段。
    • Compile。编译产出opcode中间码。
    • Execute。运行,动态运行进行输出。

2 、APC简介

3、安装配置

          重新启动apache服务器,查看phpinfo中是否有apc的配置项目,有的话就配置成功了. 

4、APC管理界面

5. APC的使用

APC的使用其实倒说不上.APC是个优化器,自安装之日起,就默默地在后台为您的PHP应用服务了.您的所有PHP代码会被缓存起来.

另外,APC可提供一定的内存缓存功能.但是这个功能并不是十分完美,有报告说如果频繁使用APC缓存的写入功能,会导致不可预料的错误.如果想使用这个功能,可以看看apc_fetch,apc_store等几个与apc缓存相关的函数.
从PHP5.2开始,APC引入了一个小甜饼,解决了困扰大家已久的大文件上传的进度条问题.。

6. APC的高级使用

1.缓存期限:

APC的缓存分两部分:系统缓存和用户数据缓存.

系统缓存: 是自动使用的,是指APC把PHP文件源码的编译结果缓存起来,然后在再次调用时先对比时间标记。如果未过期,则使用缓存代码运行。默认缓存 3600s(一小时).但是这样仍会浪费大量CPU时间.因此可以在php.ini中设置system缓存为永不过期(apc.ttl=0).不过如果这样设置,改运php代码后需要restart一下您的web服务器(比如apache…).目前对APC的性能测试一般指的是这一层cache;

用户数据缓存:由用户在编写php代码时用apc_store和apc_fetch函数操作读取、写入的.如果量不大的话我建议可以使用一下.如果量大,我建议使用memcache会更好.
如果要享受APC带来的缓存大文件上传进度的特性,需要在php.ini中将apc.rfc1867设为1,并且在表单中加一个隐藏域APC_UPLOAD_PROGRESS,这个域的值可以随机生成一个hash,以确何唯一.具体例子请参见前面给出的链接.

6、测试效率

从Ethna框架来测试:

第一次执行:

Time:260.53491973877ms
   memory:6.2379684448242MB

第二次执行:

Time:199.43404197693ms
   memory:1.1883926391602MB

性能提高了30%。

7、apc与memcache对比

1,使用apc_fetch获取数据,每次大约1-2微秒。 (10万次170ms)
2,使用Memcache::get通过localhost获取本服务器的数据,每次大概41微秒。 (10万次4160ms)
3,使用Memcache::get通过本机IP地址获取本服务器的数据,每次大概42微秒。  (10万次4268ms)
4,使用Memcache::get通过IP地址获取同网段(千兆以太网)其他机器的数据,每次大概110微秒。  (10万次11268ms)

5,使用Redis::get通过IP地址获取同网段(千兆以太网)其他机器的数据,每次大概220微秒。  (10万次21700ms)

8、php5.5之APC

APC在PHP5.4及以下版本是性能最好的代码缓存。不过PHP升级到5.5及以上后,APC不再有效。需要使用Zend的OpCache扩展。PHP 5.5已经集成Zend Opcache功能缓存速度比APC、eAccelerator、XCache更快

要启用Opcache扩展,有两步:

1. 安装opcache

编译安装PHP5.5的时候加上–enable-opcache

2.在php.ini文件中添加如下配置

zend_extension=opcache.so
[opcache]
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable=1
opcache.enable_cli=1

05-11 21:54