• 基于libmemcached,php扩展memcached的安装


    1:为什么要装memcached扩展
    memcached的1.2.4及以上增加了CAS(Check and Set)协议,对于同一key的多进程的并发处理问题。这种情况其实根数据库很像,如果同时有几个进程对同一个表的同一数据进行更新的话,那会不会打架 呢,哈哈。数据库里面可以锁定整张表,也可以锁定表里面一 行的功能,其实memcached加入的CAS根这个差不多。php的扩展memcache,不支持cas,而它的升级版memcached支持,所以我 们要装memcached扩展,memcached扩展是基于libmemcached,所以要先安装libmemcached,php的 memcache拓展的服务端是memcached这个服务,既然是它的升级版,那么php的memcached拓展的服务端同样也是 memcached,只不过php的memcached拓展还需要在服务端安装libmemcached这个依赖条件,因此我们要先安装这个 libmemcached。


    2:安装libmemcached

    1.#  wget http://launchpad.net/libmemcached/1.0/1.0.2/+download/libmemcached-1.0.2.tar.gz
    2.#  tar zxvf libmemcached-1.0.2.tar.gz
    3.#  cd  libmemcached-1.0.2
    4.# ./configure --prefix=/usr/local/libmemcached --with-memcached
    5.# make && make install

    安装注意问题:
    1: 安装过程中不要忘了,–with-memcached,不然会提示你
    checking for memcached… no
    configure: error: “could not find memcached binary”
    2:你的memcached是不是1.2.4以上的,如果不是会提示你
    collect2: ld returned 1 exit status
    make[2]: *** [clients/memslap] Error 1
    make[2]: Leaving directory `/home/zhangy/libmemcached-0.42′
    解决办法是–disable-64bit CFLAGS=”-O3 -march=i686″,如果不用这个64位的long型数据,我想php扩展memcached,memcache也就没什么区别了,memcached也就没什么意思了。


    3:安装PHP的memcached拓展

    1.# wget http://pecl.php.net/get/memcached
    2.# cd memcached-2.0.0b2
    3.# /usr/lcoal/php/bin/phpize
    4.#  ./configure --enable-memcached --with-php-config=/usr/local/php/bin/php-config --with-libmemcached-dir=/usr/local/libmemcached --with-memcached --with-zlib-dir=/usr/local/zlib --enable-memcached-igbinary
    5.#  make && make install

    上面的编译时的 “–with-zlib-dir=/usr/local/zlib”这句话, 如果说你要在缓存数据时用到压缩等函数的话,那么就需要安装zlib这个包,如果不需要压缩的话那就不需要安装了。安装方法如下

    1.# wget http://download.chinaunix.net/down.php?id=24014&ResourceID=12241&site=1
    2.# tar -xvzf zlib-1.2.3.tar.gz
    3.# cd zlib-1.2.3.tar.gz
    4.# ./configure  --prefix=/usr/local/zlib
    5.# make && make install

    上面编译时的–enable-memcached-igbinary这句话,igbinary是一个序列化工具,它将php的数据结构存储为紧密的二进制形式,在时间和空间上都有所改进,可以提高性能。要想带上这个参数那么就需要安装它 ,如下操作

    1.# http://pecl.php.net/get/igbinary-1.1.1.tgz
    2.# cd igbinary-1.1.1
    3.# /usr/lcoal/php/bin/phpize
    4.# ./configure
    5.# make && make install

    完成之后也是一个php的拓展,需要添加到php.ini中去,那么上面安装时携带的参数才有效!

    上面的拓展安装好之后会
    出现需要的memcached.so文件的地址,然后把这个拓展添加早php.ini中,然后重启下php-fpm就可以了!
    测试的代码:

    01.<?php
    02.$m = new Memcached();
    03.$m->addServer('localhost', 11211);
    04.$items = array(
    05.'key1' => 'value1',
    06.'key2' => 'value2',
    07.'key3' => 'value3'
    08.);
    09.$m->setMulti($items);
    10.$m->getDelayed(array('key1', 'key3'), true, 'result_cb');
    11.function result_cb($memc, $item)
    12.{
    13.var_dump($item);
    14.}
    15.echo "<hr />";
    16.//$m->set('fbbin',date('Y-M-D H:I:S'));
    17.echo $m->get('fbbin'); //return : 2011-Dec-Tue 06:0:th
  • 相关阅读:
    csv,exl自动提取表头两列英文字段按英文名称排序显示
    javascript:的用法
    OLAP ODS 项目总结 BI 中的关键
    一些性能查询的SQL 备忘
    ArcGIS 10 SDE for ORACLE 迁移 (3)
    如何测试一个ETL_BI 系统
    ArcGIS 10 SDE for ORACLE 迁移 (2)
    fsck.ext3: Unable to resolve 'LABEL=/design'
    ArcGIS 10 SDE for ORACLE 迁移 (4)
    BI 中关于度量的SQL计算
  • 原文地址:https://www.cnblogs.com/rooney/p/2537949.html
Copyright © 2020-2023  润新知