日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

memcached php mysql_PHP: memcached

發布時間:2024/3/13 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 memcached php mysql_PHP: memcached 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

客戶端下載

系統要求及環境配置注意:您已經有 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及以上。

確認是否安裝了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)。

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..

執行 yum install zlib-devel 安裝 memcached 源碼包(推薦版本為 memcached-2.2.0)。

注意:

安裝 memcached 前需要確認是否有 zlib-devel 包需要執行。

請先檢測下是否已安裝了 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

phpize(如果系統中有兩套PHP環境,需絕對路徑調用該命令/usr/bin/phpize,該路徑為使用云數據庫Memcache的PHP環境路徑)

./configure--with-libmemcached-dir=/usr/local/libmemcached--enable-memcached-sasl(注意這個參數)

make

make install

修改 php.ini 文件(locate 找該文件,如果系統中有兩套 PHP 環境,需找到使用云數據庫 Memcache 的 PHP 環境路徑,對應修改之),增加 extension=memcached.so memcached.use_sasl = 1。

使用該頁面最后的測試代碼測試下是否環境部署成功,請修改代碼中相應的地址、端口、用戶名及密碼。

Centos及 Aliyun Linux 5系列版本 【64位版本】確認是否安裝了 gcc-c++ 等組件。如沒有請執行 yum install gcc+ gcc-c++ 。

執行rpm –qa | grep php 查看系統中是否有 php 環境,如果沒有則執行 yum install php53 php53-devel 安裝包含源碼編譯的 php;如有 php 則不要安裝。建議使用 php 5.3(含)以上版。

php 5.2部分版本系列源代碼會有 zend_parse_parameters_none 函數會出錯,如需使用請參照 php 官方相關文檔。

執行 yum install cyrus-sasl-plain cyrus-sasl cyrus-sasl-devel cyrus-sasl-lib 安裝 SASL 相關環境。

檢測下是否已安裝了 libmemcached(包含源碼包),如有則不需要安裝,如沒有則執行以下命令安裝(推薦版本 libmemcached 1.0.2)。

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..

執行 yum install zlib-devel 安裝源碼包 memcached(推薦版本 memcached 2.0)。

注意:

安裝 memcached 前需要確認是否有 zlib-devel 包需要執行。

請先檢測下是否有已安裝了 memcached 客戶端包(包含源碼包)。如有則不需要安裝,但需要重新編譯增加 -enable-memcached-sasl 這個擴展。

wget http://pecl.php.net/get/memcached-2.0.0.tgz tar -zxvf memcached-2.0.0.tgz

cd memcached-2.0.0phpize(如果系統中有兩套PHP環境,需絕對路徑調用該命令/usr/bin/phpize,該路徑為使用云數據庫Memcache的PHP環境路徑,請在memcached源碼目錄內執行phpize)

./configure--with-libmemcached-dir=/usr/local/libmemcached--enable-memcached-sasl(注意這個參數)

make

make install

修改 php.ini 文件(locate 找該文件,yum 安裝的一般在 /etc/php.ini。 如果系統中有兩套 PHP 環境,需找到使用云數據庫 Memcache 的 PHP 環境路徑,對應修改之),增加 extension=memcached.so memcached.use_sasl = 1 。

執行 php –m |grep ,memcached ,若顯結果有 memcache 表示環境已支持 memcache。

使用該頁面最后的測試代碼測試下是否環境部署成功,請修改代碼中相應的地址、端口、用戶名及密碼。

Ubuntu Debian 等系列版本變更 ubuntu 源。

方案一:執行 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 文件名 ,然后執行該腳本進行自動變更源操作。

通過 ape-get 配置 GCC,G++ 。

首先需要使用 dpkg –s 安裝包名,例如 dpkg –s gcc,確認是否安裝了 gcc-c++ 等組件。如沒有請執行 apt-get build-dep gcc apt-get install build-essential。

安裝 php5, php5-dev。

首先需要使用 dpkg –s 安裝包名,例如 dpkg –s php,確認是否安裝了 php 等組件。如沒有請執行 apt-get install php5 php5-dev (同時會自動安裝php5-cli和php5-common)。

安裝配置 sasl 支持。

首先需要使用 dpkg –s 安裝包名, 例如 dpkg –s libsasl2,確認是否安裝了 libsasl2 cloog-ppl 等組件,如沒有請執行以下命令。

apt-get install libsasl2-dev cloog-ppl

cd/usr/local/src

執行以下命令安裝指定版本的 libmemcache。

注意:請先檢測下是否有已安裝了這些包(包含源碼包),如有則不需要安裝。

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。

注意:請先檢測下是否有已安裝了 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.0phpize5

./configure--with-libmemcached-dir=/usr/local/libmemcached--enable-memcached-sasl

make

make install

配置 php 支持 memcached,然后測試。

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=newMemcached;//聲明一個新的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為實例id

$connect->set("hello","world");

echo'hello: ',$connect->get("hello");

$connect->quit();

?>

示例2:在云數據庫 Memcache 中緩存一個數組<?php

$connect=newMemcached;//聲明一個新的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();

functiontest($val,$expect,$msg)

{

if($val!=$expect)thrownewException($msg);

}

?>

示例3:云數據庫 Memcache 與 MySQL 數據庫結合使用<?php

$connect=newMemcached;//聲明一個新的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();

functiontest($val,$expect,$msg)

{

if($val!=$expect)thrownewException($msg);

}

?>

總結

以上是生活随笔為你收集整理的memcached php mysql_PHP: memcached的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。