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,下载地址http://www.microsoft.com/downloads/zh-cn/details.aspx?displaylang=zh-cn&FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf

VC12 为vc2013,VC11为Vc2012。

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

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

后来发现,5.4下很多人用了这个http://windows.php.net/downloads/pecl/releases/apcu/4.0.7/ ,据说是官方新的推荐做法,不过经确认仅仅只有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。地址http://windows.php.net/downloads/pecl/releases/opcache/7.0.4/

需要php.ini中配置

[opcache]
zend_extension = d:/wamp/php/ext/php_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 
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 的下载地址:请点这里

本文永久更新链接地址:

相关内容