Site icon Li-Edward

memcached 怎麼安裝? php 使用 memcached 存取資料為什麼能夠提升速度呢?

memcached 怎麼安裝? php 使用 memcached 存取資料為什麼能夠提升速度呢?

memcached 怎麼安裝? php 使用 memcached 存取資料為什麼能夠提升速度呢?





memcached 是甚麼? 一句話理解

基本上就是透過記憶體存取,讓存取速度變快。它同樣提供了一個像 session 一樣的功能,在 php.ini 設定後可以取代 session 機制,本篇文章會示範如何安裝

Linux memcached 服務安裝

Step 1 更新Linux的軟體版本

yum update -y

Step 2 安裝 memcached

yum install memcached

Step 3 設定 Configure Memcached

vi /etc/sysconfig/memcached

PORT=”11211″
USER=”memcached”
MAXCONN=”1024″
CACHESIZE=”2048″
OPTIONS=””
============================
PORT:listen監聽的port
USER:程序擁有者
MAXCONN:最大連線數
CACHESIZE:快取可使用的記憶體大小(MB)
OPTIONS:額外的設定
要知道 OPTIONS 怎麼設定,可參下方的連結

Step 4 啟動/重啟/查看 Memcached 指令

# systemctl start memcached.service
# systemctl restart memcached.service
# systemctl status memcached.service

PHP memcached 模組安裝 (for XAMPP)

Step 1 安装 libmemcached

yum -y install libmemcached libmemcached-devel

Step 2 安装memcached

#cd /opt/lampp/bin  
#./pecl install memcached 

所有問答都按 ENTER 預設值即可

PHP memcached 模組安裝(for 原生apache)

Step 1 安装 php-pecl-memcache

    # sudo yum install memcached
    # sudo yum install php-memcached
    # sudo apachectl graceful

Step 2 安裝後需要重新啟動網頁伺服器及 Memcached

# systemctl restart memcached
# systemctl restart httpd

安裝完成後,最後 到 phpinfo看 如果可以在頁面找到 “memcached” 表示成功

修改 /etc/php.ini (彈性選擇是否設定)

一般 PHP SESSION 都是透過一個檔案作為存取,通常檔案名稱為 sess_xxxxxxxxxxxxx 會存放在某個路徑下(可用 session_save_path() 找到),如果設定為以下的話就不會再產生檔案,而是全部交給 memcached 來存取 SESSION,可以依情況斟酌看看

session.save_handler = memcached
session.save_path = "localhost:11211"

請注意 /etc/httpd/conf.d/php.conf 會蓋掉 php.ini 設定

搜尋 session.save_handler & session.save_path 將其註解才能吃到 php.ini 的設定,或是也可以保留這邊的設定~

# php_value session.save_handler "files"
# php_value session.save_path    "/var/lib/php/session"

錯誤排除

如遇到 ERROR: `phpize’ failed

解決方法
yum install m4 autoconf

如遇到 error: memcached support requires ZLIB.

解決方法
yum install -y zlib zlib-devel

vi /opt/lampp/etc/php.ini
搜尋 ;zend_extension=opcache.so 下方加入 extension=memcached.so

重啟apache
/opt/lampp/lampp restartapache

到 phpinfo看 是否已經啟用 memcached

PHP 使用範例 – 暫存資料

<?php
$oMemcache = new Memcached();
$oMemcache->addServer('localhost',11211);   // loaclhost可改成某台IP Server
$oMemcache->set('test_memcached','hello memcached!<br/>');
echo $oMemcache->get('memcached');

// 輸出 
hello memcached!

PHP 使用範例 – 資料庫快取

<?php
$oMemcache = new Memcached();
$oMemcache->addServer('localhost',11211);   // loaclhost可改成某台IP Server
$oMemcache->set('userid','admin');
echo get_user('admin');

// 輸出粗體那行所設定的 userid,節省了DB SELECT的查詢時間

function get_user ($userid) {
    global $oMemcache;
    result = $oMemcache->get($userid);
    if (!result) {
        $result = db_select("SELECT * FROM users WHERE userid = ?", userid);
        $oMemcache->set('userid', $result);
    }
    return $result;
}

Memcached session PHP Warning

session_start(): Unable to clear session lock record in
session_start(): Failed to read session data: memcached

若系統不斷出現以上的訊息,建議您在 php.ini 新增以下參數即可

memcached.sess_locking = 0

參考資料:OPTIONS 參數參考說memcached使用方法說明ssorc.tw





主頁 » LINUX » 軟體安裝 » memcached 怎麼安裝? php 使用 memcached 存取資料為什麼能夠提升速度呢?
Exit mobile version