北大青鸟小游网:值得大家信赖的游戏下载站!

微信:96kaifa
关注我们
所在位置:首页 > 服务器 > php-memcached扩展安装及使用方法

php-memcached扩展安装及使用方法

发布时间:2021-06-30 10:46:47来源:北大青鸟手游网作者:北大青鸟手游网

客户端下载

客户端下载:
https://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/cn/ocs/0.1.9/assets/libmemcached-1.0.16.gz?spm=5176.doc48432.2.1.eQ5tPY&file=libmemcached-1.0.16.gz

客户端介绍:
http://pecl.php.net/support.php?spm=5176.doc48432.2.2.eQ5tPY

客户端版本介绍:
http://pecl.php.net/package/memcached?spm=5176.doc48432.2.3.GstFhV

系统要求及环境配置

注意:您已经有 php memcache 等环境,请注意教程中的一些提示,以免生产环境被覆盖,导致业务不可用,在升级及再编译环境前请做好环境备份。

windows 系列版本

如果采用标准的 php memcached 扩展不能成功搭建,可以考虑换成手工拼包的形式来访问云数据库 Memcache,连接方式请参考如下链接,示例代码非常简单,与 php memcached 的区别就是仅支持主流接口,需自己补充某些特定接口,安装及使用方法请参见这里。

Centos 及 Aliyun Linux 6系列版本

注意:Memcached 2.2.0 扩展必须使用 libmemcached 1.0.x 的库,低于1.0的库不再能够成功编译。编译 libmemcached 时 GCC 要求在4.2及以上。

 wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz
 tar zxvf libmemcached-1.0.18.tar.gz
 cd libmemcached-1.0.18
 ./configure –prefix=/usr/local/libmemcached –enable-sasl
 make
 make install
 cd ..

注意:

wget http://pecl.php.net/get/memcached-2.2.0.tgz
tar zxvf memcached-2.2.0.tgz
cd memcached-2.2.0
phpize(如果系统中有两套PHP环境,需绝对路径调用该命令/usr/bin/phpize,该路径为使用云数据库Memcache的PHP环境路径)
./configure –with-libmemcached-dir=/usr/local/libmemcached –enable-memcached-sasl(注意这个参数)
make
make install
extension=memcached.so memcached.use_sasl = 1。

Centos及 Aliyun Linux 5系列版本 【64位版本】

php 5.2部分版本系列源代码会有 zend_parse_parameters_none 函数会出错,如需使用请参照 php 官方相关文档。

 wget http://launchpad.net/libmemcached/1.0/1.0.2/+download/libmemcached-1.0.2.tar.gz
 tar -zxvf libmemcached-1.0.2.tar.gz
 cd libmemcached-1.0.2
 ./configure –prefix=/usr/local/libmemcached –enable-sasl
 make
 make install
 cd ..

注意:

wget http://pecl.php.net/get/memcached-2.0.0.tgz tar -zxvf memcached-2.0.0.tgz
cd memcached-2.0.0 phpize(如果系统中有两套PHP环境,需绝对路径调用该命令/usr/bin/phpize,该路径为使用云数据库Memcache的PHP环境路径,请在memcached源码目录内执行phpize)
./configure –with-libmemcached-dir=/usr/local/libmemcached –enable-memcached-sasl(注意这个参数)
make
make install

Ubuntu Debian 等系列版本

方案一:执行 vim /etc/apt/source.list,在最前面添加以下内容。

 deb http://mirrors.aliyun.com/ubuntu/ precise main restricted universe multiverse
 deb http://mirrors.aliyun.com/ubuntu/ precise-security main restricted universe multiverse
 deb http://mirrors.aliyun.com/ubuntu/ precise-updates main restricted universe multiverse
 deb http://mirrors.aliyun.com/ubuntu/ precise-proposed main restricted universe multiverse
 deb http://mirrors.aliyun.com/ubuntu/ precise-backports main restricted universe multiverse
 deb-src http://mirrors.aliyun.com/ubuntu/ precise main restricted universe multiverse
 deb-src http://mirrors.aliyun.com/ubuntu/ precise-security main restricted universe multiverse
 deb-src http://mirrors.aliyun.com/ubuntu/ precise-updates main restricted universe multiverse
 deb-src http://mirrors.aliyun.com/ubuntu/ precise-proposed main restricted universe multiverse
 deb-src http://mirrors.aliyun.com/ubuntu/ precise-backports main restricted universe multiverse
 apt-get update //更新一下列表

方案二: 通过 wget http://oss.aliyuncs.com/aliyunecs/update_source.zip 下载 update_source 的压缩包,解压后予执行权限 chmod 777 文件名 ,然后执行该脚本进行自动变更源操作。

首先需要使用 dpkg –s 安装包名,例如 dpkg –s gcc,确认是否安装了 gcc-c++ 等组件。如没有请执行 apt-get build-dep gcc apt-get install build-essential。

首先需要使用 dpkg –s 安装包名,例如 dpkg –s php,确认是否安装了 php 等组件。如没有请执行 apt-get install php5 php5-dev (同时会自动安装php5-cli和php5-common)。

首先需要使用 dpkg –s 安装包名, 例如 dpkg –s libsasl2,确认是否安装了 libsasl2 cloog-ppl 等组件,如没有请执行以下命令。

 apt-get install libsasl2-dev cloog-ppl
 cd /usr/local/src

注意:请先检测下是否有已安装了这些包(包含源码包),如有则不需要安装。

 wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz
 tar -zxvf libmemcached-1.0.18.tar.gz
 cd libmemcached-1.0.18
 ./configure –prefix=/usr/local/libmemcached
 make
 make install
 cd ..

注意:请先检测下是否有已安装了 memcached 客户端包(包含源码包),如有则不需要安装,但需要重新编译增加 -enable-memcached-sasl 这个扩展。

 wget
 http://pecl.php.net/get/memcached-2.2.0.tgz tar zxvf memcached-2.2.0.tgz
 cd memcached-2.2.0 phpize5
 ./configure –with-libmemcached-dir=/usr/local/libmemcached –enable-memcached-sasl
 make
 make install
 echo “extension=memcached.so” >>/etc/php5/conf.d/pdo.ini echo “memcached.use_sasl = 1” >>/etc/php5/conf.d/pdo.ini
 php -m |grep mem memcached

如果显示出该组件代表安装完成,配置完毕。

PHP 代码示例

示例1:基本的连接云数据库 Memcache 及 set/get 操作

<?php
$connect = new Memcached;  //声明一个新的memcached链接
$connect->setOption(Memcached::OPT_COMPRESSION, false); //关闭压缩功能
$connect->setOption(Memcached::OPT_BINARY_PROTOCOL, true); //使用binary二进制协议
$connect->setOption(Memcached::OPT_TCP_NODELAY, true); //重要,php memcached有个bug,当get的值不存在,有固定40ms延迟,开启这个参数,可以避免这个bug
$connect->addServer(‘aaaaaaaaaa.m.yyyyyyyyyyy.ocs.aliyuncs.com’, 11211); //添加OCS实例地址及端口号
$connect->setSaslAuthData(‘aaaaaaaaaa’, ‘password’); //设置OCS帐号密码进行鉴权,如已开启免密码功能,则无需此步骤;新版OCS的username可以置空
$connect->set(“hello”, “world”);
echo ‘hello: ‘,$connect->get(“hello”);
$connect->quit();
?>

示例2:在云数据库 Memcache 中缓存一个数组

<?php
$connect= new Memcached; //声明一个新的memcached链接
$connect->setOption(Memcached::OPT_COMPRESSION, false); //关闭压缩功能
$connect->setOption(Memcached::OPT_BINARY_PROTOCOL, true);//使用binary二进制协议
$connect->setOption(Memcached::OPT_TCP_NODELAY, true); //重要,php memcached有个bug,当get的值不存在,有固定40ms延迟,开启这个参数,可以避免这个bug
$connect->addServer(‘xxxxxxxx.m.yyyyyyyy.ocs.aliyuncs.com’, 11211);//添加OCS实例地址及端口号
$connect->setSaslAuthData(‘xxxxxxxx’, ‘bbbbbbbb’);//设置OCS帐号密码进行鉴权,如已开启免密码功能,则无需此步骤
$user = array(
    “name” => “ocs”,
    “age” => 1,
    “sex” => “male”
); //声明一组数组
$expire = 60; //设置过期时间
test($connect->set(‘your_name’,$user,$expire), true, ‘Set cache failed’);
if($connect->get(‘your_name’)){
$result =$connect->get(‘your_name’);
}else{
echo “Return code:”, $connect->getResultCode();
echo “Retucn Message:”, $connect->getResultMessage (); //如出现错误,解析出返回码
$result=” “;
}
print_r($result);
$connect->quit();
function test($val, $expect, $msg)
{
    if($val!= $expect) throw new Exception($msg);
}
?>

示例3:云数据库 Memcache 与 MySQL 数据库结合使用

<?php
$connect = new Memcached; //声明一个新的memcached链接
$connect->setOption(Memcached::OPT_COMPRESSION, false);//关闭压缩功能
$connect->setOption(Memcached::OPT_BINARY_PROTOCOL, true);//使用binary二进制协议
$connect->setOption(Memcached::OPT_TCP_NODELAY, true); //重要,php memcached有个bug,当get的值不存在,有固定40ms延迟,开启这个参数,可以避免这个bug
$connect->addServer(‘xxxxxx.m.yyyyyyyy.ocs.aliyuncs.com’, 11211);//添加实例地址  端口号
$connect->setSaslAuthData(‘xxxxxx’, ‘my_passwd’);//设置OCS帐号密码进行鉴权,如已开启免密码功能,则无需此步骤
$user = array(
   “name” => “ocs”,
   “age”  => 1,
   “sex”  => “male”
); //定义一组数组
if($connect->get(‘your_name’))
{
  $result =$connect->get(‘your_name’);
  print_r($result);
  echo “Found in OCS, get data from OCS”; //如果获取到数据,则打印此数据来源于OCS
  exit;
}
else
{
  echo “Return code:”, $connect->getResultCode();
  echo “Retucn Message:”, $connect->getResultMessage ();//抛出code返回码
  $db_host=’zzzzzz.mysql.rds.aliyuncs.com’; //数据库地址
  $db_name=’my_db’;         //database name
  $db_username=’db_user’;    //数据库用户名
  $db_password=’db_passwd’;//数据库用户密码
  $connection=mysql_connect($db_host,$db_username,$db_password);
  if (!mysql_select_db($db_name, $connection))
  {
    echo ‘Could not select database’; //数据库连接不成功则抛出错误信息
    exit;
  }
  $sql = “SELECT name,age,sex FROM test1 WHERE name = ‘ocs'”;
  $result = mysql_query($sql, $connection);
  while ($row = mysql_fetch_assoc($result))
  {
    $user = array(
      “name” => $row[“name”],
      “age”  => $row[“age”],
      “sex”  => $row[“sex”],
    );
    $expire = 5; //设置数据在缓存中的过期时间
    test($connect->set(‘your_name’,$user,$expire), true, ‘Set cache failed’); //写入OCS缓存
  }
  mysql_free_result($result);
  mysql_close($connection);
}
print_r($connect->get(‘your_name’)); //打印出  获取到的数据
echo “Not Found in OCS,get data from MySQL”; //确认从数据库获取的数据
$connect->quit();
function test($val, $expect, $msg)
{
  if($val!= $expect) throw new Exception($msg);
}

  • 确认是否安装了gcc-c++ 等组件(使用 gcc –v 查看版本是否为4.2及以上)。如没有请执行 yum install gcc+ gcc-c++。

  • 执行 rpm –qa | grep php 查看系统中是否有 PHP 环境,如果没有则执行 yum install php-devel,php-common,php-cli 安装包含源码编译的 PHP。
    建议使用 php 5.3及以上版本。php 5.2部分版本系列源代码会有 zend_parse_parameters_none 函数会出错,如需使用请参照 php 官方相关文档。如是源代码编译,请按照官方 php 编译升级的办法进行。

  • 检测是否有已安装了 SASL 相关环境包,如没有,则执行 yum install cyrus-sasl-plain cyrus-sasl cyrus-sasl-devel cyrus-sasl-lib 安装 SASL 相关环境。

  • 检测下是否有已安装了 libmemcached 源码包,若没有,则执行以下命令安装 libmemcached 源码包(推荐版本 libmemcached-1.0.18)。

  • 执行 yum install zlib-devel 安装 memcached 源码包(推荐版本为 memcached-2.2.0)。

  • 安装 memcached 前需要确认是否有 zlib-devel 包需要执行。

  • 请先检测下是否已安装了 memcached 客户端包(包含源码包)。如有则不需要安装,但需要重新编译增加 -enable-memcached-sasl 这个扩展。

  • 修改 php.ini 文件(locate 找该文件,如果系统中有两套 PHP 环境,需找到使用云数据库 Memcache 的 PHP 环境路径,对应修改之),增加

  • 使用该页面最后的测试代码测试下是否环境部署成功,请修改代码中相应的地址、端口、用户名及密码。

  • 确认是否安装了 gcc-c++ 等组件。如没有请执行 yum install gcc+ gcc-c++ 。

  • 执行rpm –qa | grep php 查看系统中是否有 php 环境,如果没有则执行 yum install php53 php53-devel 安装包含源码编译的 php;如有 php 则不要安装。建议使用 php 5.3(含)以上版。

  • 执行 yum install cyrus-sasl-plain cyrus-sasl cyrus-sasl-devel cyrus-sasl-lib 安装 SASL 相关环境。

  • 检测下是否已安装了 libmemcached(包含源码包),如有则不需要安装,如没有则执行以下命令安装(推荐版本 libmemcached 1.0.2)。

  • 执行 yum install zlib-devel 安装源码包 memcached(推荐版本 memcached 2.0)。

  • 安装 memcached 前需要确认是否有 zlib-devel 包需要执行。

  • 请先检测下是否有已安装了 memcached 客户端包(包含源码包)。如有则不需要安装,但需要重新编译增加 -enable-memcached-sasl 这个扩展。

  • 修改 php.ini 文件(locate 找该文件,yum 安装的一般在 /etc/php.ini。 如果系统中有两套 PHP 环境,需找到使用云数据库 Memcache 的 PHP 环境路径,对应修改之),增加 extension=memcached.so memcached.use_sasl = 1 。

  • 执行 php –m |grep ,memcached ,若显结果有 memcache 表示环境已支持 memcache。

  • 使用该页面最后的测试代码测试下是否环境部署成功,请修改代码中相应的地址、端口、用户名及密码。

  • 变更 ubuntu 源。

  • 通过 ape-get 配置 GCC,G++ 。

  • 安装 php5, php5-dev。

  • 安装配置 sasl 支持。

  • 执行以下命令安装指定版本的 libmemcache。

  • 执行以下命令安装指定版本的 memcached。

  • 配置 php 支持 memcached,然后测试。


我要评价

  • 热门资讯
  • 最新资讯
  • 手游排行榜
  • 手游新品榜