系統鏡像及環境要求: 1) 適用於windows系列版本及開發者的相關教程 請參考本文1.0開始安裝步驟 2) Centos 6系列及Aliyun Linux 6系列以上版本 請參考本文2.0開始安裝步驟 3) Centos 5系列及Aliyun Linux 5系列版本,請參考本文3.0開始安裝步驟 ...
系統鏡像及環境要求:
1) 適用於windows系列版本及開發者的相關教程 請參考本文1.0開始安裝步驟
2) Centos 6系列及Aliyun Linux 6系列以上版本 請參考本文2.0開始安裝步驟
3) Centos 5系列及Aliyun Linux 5系列版本,請參考本文3.0開始安裝步驟
4) Ubuntu Debian等系列版本,請參考本文4.0安裝步驟
註意事項:如您已經有php memcache等環境,請註意教程中的一些提示,以免生產環境被覆蓋,導致業務不可用,在升級及再編譯環境前請做好環境備份!
1.0 安裝步驟
如果採用標準的php memcached擴展不能成功搭建,可以考慮換成手工拼包的形式來訪問OCS,連接方式請參考如下鏈接,示例代碼非常簡單,與php memcached的區別就是僅支持主流介面,需自己補充某些特定介面,安裝及使用方法如下:
https://github.com/ronnywang/PHPMemcacheSASL
2.0 安裝步驟
Centos及 Aliyun Linux 6系列版本
首先需要確認是否安裝了gcc-c++等組件可以使用如沒有請執行,
yum install gcc+ gcc-c++
使用gcc –v查看版本是否為4.2(含)以上 【必須要安裝GCC GCC要大於等於4.2】
1) rpm –qa | grep php 查看系統中是否有PHP環境,如果沒有則安裝之;如果有PHP則不要安裝。建議使用php5.3【含】以上版本PHP5.2部分版本系列源代碼會有zend_parse_parameters_none函數會出錯,如需使用請參照php官方相關文檔【包含源碼編譯的PHP】
yum install php-devel,php-common,php-cli
【如是源代碼編譯,請按照官方php編譯升級的辦法進行】
2) 安裝SASL相關環境
yum install cyrus-sasl-plain cyrus-sasl cyrus-sasl-devel cyrus-sasl-lib
【請先檢測下是否有已安裝了這些包,如有則不需要安裝】
3) 安裝源碼包libmemcached 【推薦版本libmemcached-1.0.16】
請先檢測下是否有已安裝了這些包【包含源碼包】如有則不需要安裝
wget https://launchpad.net/libmemcached/1.0/1.0.16/+download/libmemcached-1.0.16.tar.gz tar zxvf libmemcached-1.0.16.tar.gz cd libmemcached-1.0.16 ./configure --prefix=/usr/local/libmemcached --enable-sasl make make install cd ..
4) 安裝源碼包memcached 【推薦版本為memcached-2.2.0】
安裝MEMCACHED前需要確認是否有zlib-devel包沒有需要執行
yum install 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,該路徑為使用OCS的PHP環境路徑) ./configure --with-libmemcached-dir=/usr/local/libmemcached --enable-memcached-sasl(註意這個參數) make make install
最後修改php.ini文件(locate找該文件,如果系統中有兩套PHP環境,需找到使用OCS的PHP環境路徑,對應修改之),增加
extension=memcached.so memcached.use_sasl = 1
依賴 :
Memcached 2.2.0擴展必須使用libmemcached 1.0.x的庫,低於1.0的庫不再能夠成功編譯。編譯 libmemcached時GCC要求在4.2以上。
使用該頁面最後的測試代碼測試下是否環境部署成功,請修改代碼中相應的地址 埠 用戶名及密碼
3.0 安裝步驟
Centos及 Aliyun Linux 5系列版本 【64位版本】
首先需要確認是否安裝了gcc-c++等組件如沒有請執行
yum install gcc+ gcc-c++
1) rpm –qa | grep php 查看系統中是否有PHP環境,如果沒有則安裝之;如果有PHP則不要安裝!建議使用php5.3【含】以上版本PHP5.2部分版本系列源代碼會有zend_parse_parameters_none函數會出錯,如需使用請參照php官方相關文檔【包含源碼編譯的PHP】
yum install php53 php53-devel
2) 安裝SASL相關環境
yum install cyrus-sasl-plain cyrus-sasl cyrus-sasl-devel cyrus-sasl-lib
3) 安裝源碼包libmemcached 【推薦版本libmemcached1.0.2】
請先檢測下是否有已安裝了這些包【包含源碼包】如有則不需要安裝
wget http://launchpad.net/libmemcached/1.0/1.0.16/+download/libmemcached-1.0.16.tar.gz tar -zxvf libmemcached-1.0.16.tar.gzcd libmemcached-1.0.16 cd libmemcached-1.0.16 ./configure --prefix=/usr/local/libmemcached --enable-sasl make make install cd ..
4) 安裝源碼包memcached 【推薦版本memcached2.0】
安裝MEMCACHED前需要確認是否有zlib-devel包沒有需要執行
yum install zlib-devel
請先檢測下是否有已安裝了memcached客戶端包【包含源碼包】如有則不需要安裝,但需要重新編譯增加-enable-memcached-sasl這個擴展
wget http://pecl.php.net/get/memcached-2.2.0.tgz tar -zxvf memcached-2.0.0.tgz cd memcached-2.0.0 phpize(如果系統中有兩套PHP環境,需絕對路徑調用該命令/usr/bin/phpize,該路徑為使用OCS的PHP環境路徑,請在memcached源碼目錄內執行phpize) ./configure --with-libmemcached-dir=/usr/local/libmemcached --enable-memcached-sasl(註意這個參數) make make instal
最後修改php.ini文件(locate找該文件,yum安裝的一般在/etc/php.ini 如果系統中有兩套PHP環境,需找到使用OCS的PHP環境路徑,對應修改之),增加
extension=memcached.so memcached.use_sasl = 1
執行php –m |grep memcached 如顯結果有 memcache 表示環境已支持memcache
使用該頁面最後的測試代碼測試下是否環境部署成功,請修改代碼中相應的地址 埠 用戶名及密碼
4.0 安裝步驟
1) 變更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.tgz 下載update_source的壓縮包 解壓後予執行許可權 chmod 777 文件名 ,然後執行該腳本進行自動變更源操作
2) 通過ape-get配置GCC,G++
首先需要使用dpkg –s安裝包名 【例如 dpkg –s gcc】確認是否安裝了gcc-c++等組件如沒有請執行
apt-get build-dep gcc apt-get install build-essential apt-get install pkg-config
3) 安裝php5, php5-dev
首先需要使用dpkg –s安裝包名 【例如 dpkg –s php】確認是否安裝了php等組件如沒有請執行
apt-get install php5 php5-dev 【同時會自動安裝php5-cli和php5-common】
4) 安裝配置sasl支持
首先需要使用dpkg –s安裝包名 【例如 dpkg –s libsasl2】確認是否安裝了libsasl2 cloog-ppl等組件如沒有請執行
apt-get install libsasl2-dev cloog-ppl cd /usr/local/src
5) 安裝指定版本的libmemcache
請先檢測下是否有已安裝了這些包【包含源碼包】如有則不需要安裝
wget https://launchpad.net/libmemcached/1.0/1.0.16/+download/libmemcached-1.0.16.tar.gz tar -zxvf libmemcached-1.0.16.tar.gz cd libmemcached-1.0.16 ./configure --prefix=/usr/local/libmemcached make make install cd ..
6) 安裝指定版本的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.0 phpize5 ./configure --with-libmemcached-dir=/usr/local/libmemcached --enable-memcached-sasl make make install
7) 配置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 【顯示出該組件代表安裝完成】
配置完畢
代碼示例如下
1、示例1:最基本的連接OCS及set/get操作:
$connect = new Memcached; //聲明一個新的memcached鏈接 $connect->setOption(Memcached::OPT_COMPRESSION, false); //關閉壓縮功能 $connect->setOption(Memcached::OPT_BINARY_PROTOCOL, true); //使用binary二進位協議 $connect->addServer('aaaaaaaaaa.m.yyyyyyyyyyy.ocs.aliyuncs.com', 11211); //添加OCS實例地址及埠號 $connect->setSaslAuthData('aaaaaaaaaa, 'password'); //設置OCS帳號密碼進行鑒權,如已開啟免密碼功能,則無需此步驟 $connect->set("hello", "world"); echo 'hello: ',$connect->get("hello"); $connect->quit();
2、示例2:在OCS中緩存一個數組
$connect= new Memcached; //聲明一個新的memcached鏈接 $connect->setOption(Memcached::OPT_COMPRESSION, false); //關閉壓縮功能 $connect->setOption(Memcached::OPT_BINARY_PROTOCOL, true);//使用binary二進位協議 $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、示例3:OCS與MySQL資料庫結合使用的例子
$connect = new Memcached; //聲明一個新的memcached鏈接 $connect->setOption(Memcached::OPT_COMPRESSION, false);//關閉壓縮功能 $connect->setOption(Memcached::OPT_BINARY_PROTOCOL, true);//使用binary二進位協議 $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); }
來源:https://help.aliyun.com/knowledge_detail/5974954.html