shoulu 发表于 2015-9-1 07:05:04

windows7下安装 memcached

  为了工作需要,今天在windows7环境安装了下了memcached。
  想要安装memcached需要三个步骤
  1、安装memcached服务
  在网上下载一个 memcached for windows。将其解压到一个目录,暂时称之为MEMECACHED_HOST。
  在命令行下进入到MEMECACHED_HOST目录,然后执行memcached.exe -p 11211 -l 127.0.0.1,这样memcached就启动起来了。
  如果不想每次使用memcached的时候都手动启动的话,可以把它安装为windows 服务。方法为memcached.exe -d install -p 11211 -l 127.0.0.1
  应该就可以了。
  2、下载php_memcached.dll
  这个php_memcached.dll并不是php环境自带的。这个需要大家自己到互联网上自己下载。
  需要注意的是php_memcached.dll必须和自己机器上php版本想对应的。如果不对应,就会出现memcached加载不成功的情况(我今天就是因为这个搞了很长时间。我php是5.2.12 下载的php_memcached.dll确实for php5.3的 。。。。。)。dll文件下载成功以后,解压缩到php的ext目录下面。如果apache的httpd.conf中没有设置PHPIniDir这个变量,估计需要把这个dll复制到system32目录下面(不太确定这个??)。
  3、为php配memcached扩展
  memcached服务器已经启动了,但是php还是不能连接这个服务。因为,我们还没有为php配置memcached扩展。
  打开php.ini(确保是php加载的按个ini文件)添加一行
  extension=php_memcache.dll
  如果你php.ini已经有这个扩展那就不需要咱添加了。如果extension=php_memcache.dll签名有个“;”则需要把这个“;”去掉
  所有上面三步都做完之后, 重启apache。
  重启好apache 以后看看phpinfo的输出结果。
  如果有memcached 这项输出,说明memcached扩展已经添加成功。
  (

如果没有就表明memcached还有什么地方没有正确配置。那就需要再好好看看上面三步哪个地方出漏子了。 这个就需要大家自己好好看看了。真不行的话  就google吧。
  )
  memcached环境配好了。
  万事俱备只欠东风。现在写一个小程序看看memcached是不是好用吧!




1 <?php   
2$memcache = new Memcache; //创建一个memcache对象   
3$memcache->connect('localhost', 11211) or die ("Could not connect"); //连接Memcached服务器   
4 $memcache->set('key', 'test'); //设置一个变量到内存中,名称是key 值是test   
5 $get_value = $memcache->get('key'); //从内存中取出key的值   
6 echo $get_value;   
代码范例(来自chinaunix):



PHP代码

[*]<?php
[*]//访问统计
[*]$memcache = new Memcache;
[*]$memcache->connect(’localhost’, 11211) or die ("Could not connect");
[*]if($s=$memcache->get(’a’)) {
[*]    $s=$s+1;
[*]    $memcache->set(’a’,$s);
[*]}
[*]else
[*]$memcache->set(’a’,1);
[*]echo ’访问结果为:’.$s;
[*]?>

等效



PHP代码

[*]<?php
[*]$memcache = new Memcache;
[*]$memcache->connect(’localhost’, 11211) or die ("Could not connect");
[*]
[*]if($s=$memcache->increment(’a’,1)) {
[*]    echo $s;      
[*]}
[*]else
[*]$memcache->set(’a’,1);
[*]?>

数据压缩



PHP代码

[*]<?php
[*]$memcache = new Memcache;
[*]$memcache->connect(’localhost’, 11211) or die ("Could not connect");
[*]$test=(str_repeat(’jetwong’,100000));
[*]$memcache->set(’b’,($test));
[*]?>
[*]使用压缩:
[*]<?php
[*]$memcache = new Memcache;
[*]$memcache->connect(’localhost’, 11211) or die ("Could not connect");
[*]$test=(str_repeat(’jetwong’,100000));
[*]$memcache->set(’b’,($test),MEMCACHE_COMPRESSED);
[*]?>

内存的更新清理



PHP代码

[*]<?php
[*]$memcache = new Memcache;
[*]$memcache->connect(’localhost’, 11211) or die ("Could not connect");
[*]
[*]/*设置值*/
[*]$status = $memcache->getStats();
[*]echo ’设置前内存使用情况’.$status[’bytes’].’<br>’;
[*]echo ’设置后’;
[*]for($i=0;$i<9;$i++) {
[*]    $memcache->set(’b’.$i,rand(1,99));      
[*]    echo ’<br>’.$i.’->’.$memcache->get(’b’.$i);         
[*]}
[*]
[*]/*查看设置的值*/
[*]$status = $memcache->getStats();
[*]echo ’delete前内存使用情况’.$status[’bytes’].’<br>’;
[*]echo ’<br>开始delete’;
[*]for($i=0;$i<9;$i++) {
[*]    $memcache->delete(’b’.$i);      
[*]    echo ’<br>’.$i.’->’.$memcache->get(’b’.$i);
[*]}
[*]
[*]/*查看flush使用的情况*/
[*]$status = $memcache->getStats();
[*]echo ’使用flush前内存使用情况’.$status[’bytes’].’<br>’;
[*]echo ’使用flush情况:’;
[*]for($i=0;$i<9;$i++) {
[*]    $memcache->set(’b’.$i,rand(1,99));      
[*]    echo ’<br>’.$i.’->’.$memcache->get(’b’.$i);   
[*]}
[*]$memcache->flush();
[*]echo ’flush之后:’;
[*]for($i=0;$i<9;$i++) {         
[*]    echo ’<br>’.$i.’->’.$memcache->get(’b’.$i);
[*]}
[*]$status = $memcache->getStats();
[*]echo ’flush后内存使用情况’.$status[’bytes’].’<br>’;
[*]?>

内存超量测试



PHP代码

[*]<?php
[*]$memcache = new Memcache;
[*]$memcache->connect(’localhost’, 11211) or die ("Could not connect");
[*]
[*]//600K左右
[*]$test1= str_repeat(’jetlee’,100000);
[*]//600K左右
[*]$test2= str_repeat(’jetlee’,100000);
[*]//600K左右
[*]$test3= str_repeat(’李连杰’,200000);
[*]//600K左右
[*]$test4= str_repeat(’连杰李’,100000);
[*]//200K
[*]$test5= file_get_contents(’http://img.pconline.com.cn/images/photoblog/2988177/20068/4/1154688770042_mthumb.JPG’);
[*]$test6= file_get_contents(’http://img.pconline.com.cn/images/photoblog/1767557/20069/28/1159417108902_mthumb.jpg’);
[*]
[*]for($i=1;$i<=6;$i++) {
[*]    $j=’test’.$i;
[*]    if($memcache->set($j,$$j)) {
[*]      echo $j.’->设置成功<br>’;
[*]      $status = $memcache->getStats();
[*]      echo ’内存:’.$status[’bytes’].’<br>’;
[*]    }
[*]    else {
[*]      echo $j.’->设置失败<br>’;
[*]    }
[*]}
[*]?>

总结



PHP代码

[*]<?
[*]//设置篇
[*]if($data = $memcache->get(’k’,$v)) {
[*]    //显示我们的数据
[*]    }
[*]else {
[*]    $data = get_from_database; //得到数据源
[*]    if(!$memcache->set(’k’,$data), MEMCACHE_COMPRESSED) //开始设置
[*]    log();    //不成功,记录失败信息      
[*]}
[*]?>
  再次强调下:php_memcached.dll必须是和php版本相匹配的。否则,可能会出现memcached的扩展加载不成功的情况。
  
  如果想了解memcached命令及其意思,可以直接在进入到MEMCACHED_HOST下输入memcached -h 就会把所有的命令及其解释
  都显示出来。。
  参考:http://jxxms.javaeye.com/blog/804676
  http://apps.hi.baidu.com/share/detail/5634652
  http://www.jzxue.com/fuwuqi/http-iis-apache/200908/15-2496_2.html
  http://wenku.baidu.com/view/fcb5770bf78a6529647d534b.html
  http://jxxms.javaeye.com/blog/804676
  http://www.cnblogs.com/analyzer/articles/1581957.html
页: [1]
查看完整版本: windows7下安装 memcached