在 php 中缓存分为很多种类型如, 内存缓存, 文件缓存, 页面缓存本文章要来讲述关于 php 中内存缓存的一些方法, 下面我们介绍 Memcached 缓存和 php 自带的 APC 缓存方法.
1.Memcached 缓存
memcached 是高性能的分布式内存缓存服务器, 通过缓存数据库查询结果, 减少数据库访问次数, 以提高动态 web 应用的速度, memcached 使用了 "Key=>Value" 方式组织数据, 可以允许不同主机上的多个用户同时访问这个缓存系统, 一般用于大型网站使用, memcached 使用内存缓存数据, 所以它是易失的, 当服务器重启, 或者 memcached 进程中止, 数据便会丢失, 所以 memcached 不能用来持久保存数据.
用过 php_memcache 的人都会觉得 PHP 内存缓存是一个很复杂的东西, 其实不然 memcached 是高效快速的分布式内存对象缓存系统, 主要用于加速 WEB 动态应用程序.
这里介绍 memcached 在 WIN32 下的配置及其使用.
一 PHP 内存缓存的配置, WIN32 环境
1 下载 php_memcache.rar
解压压缩包: php_memcache.rar
php_memcache.rar 压缩包里主包含的文件有:
- /memcached-1.2.1-win32/memcached.exe
- /php_memcache/php_memcache.dll
2 打开命令提示符, 指向到 memcached.exe 所在路径, 运行 memcached.exe -d start
3 将 php_memcache.dll 文件拷贝到 PHP 的动态文件库的文件夹下
4 在 php.ini 文件中加入一行 extension=php_memcache.dll
5 重新启动 Apache, 然后查看一下 phpinfo, 如果有 memcache, 那么就说明安装成功!
例, 代码如下:
- <?php
- // 包含 memcached 类文件
- require_once('memcached-client.php');
- // 选项设置
- $options = array(
- 'servers' =--> array('www.phprm.com:11211'),//memcached 服务的地址端口
- 'debug' => true,// 是否打开 debug
- 'compress_threshold' => 10240,// 超过多少字节的数据时进行压缩
- 'persistant' => false// 是否使用持久连接
- );
- // 实例化 memcached 对象
- $memcached = new memcached($options);
- $sql = 'SELECT * FROM table1';
- $key = md5($sql);
- // 如果在 memcached 中没有缓存数据, 把缓存数据写入 memcached
- if(!($datas = $memcached->get($key)))
- {
- $conn = mysql_connect('localhost', 'hxsd', '123456');
- mysql_select_db('hxsd');
- $result = mysql_query($sql);
- while($row = mysql_fetch_object($result))
- {
- $datas[] = $row;
- }
- // 将数据库中获取到的结果集数据保存到 memcached 中, 以供下次访问时使用
- $memcached->add($key, $datas);
- }
- else
- {
- // 直接使用 memcached 中的缓存数据 $datas
- }
- ?>
内存缓存二, APCECZend 加速器的比较
一 APC
APC, 全称是 Alternative PHP Cache, 官方翻译叫 "可选 PHP 缓存", 主页是 http://pecl.php.net/package/apc,php 帮助手册页面: http://cn.php.net/apc
APC 是个优化器, 自安装之日起, 就默默地在后台为您的 PHP 应用服务了. 您的所有 PHP 代码会被缓存起来, 针对 php opcode.
另外, APC 可提供一定的内存缓存功能. 但是这个功能并不是十分完美, 有报告说如果频繁使用 APC 缓存的写入功能, 会导致不可预料的错误. 如果想使用这个功能, 可以看看 apc_fetch,apc_store 等几个与 apc 缓存相关的函数.
安装, 代码如下:# pecl install APC
配置:/etc/php.inc, 代码如下:
- extension=apc.so
- [apc]
- apc.enabled = 1
- apc.shm_segments = 1
- apc.shm_size = 30
- apc.optimization = 0
- apc.ttl = 7200
- apc.user_ttl = 7200
- apc.num_files_hint = 1000
- apc.mmap_file_mask = /tmp/apc.XXXXXX
来源: https://www.php1.cn/detail/php-c2fe51d77b.html