參考連接1:https://serversforhackers.com/c/installing-php-7-with-memcached
參考連接2:https://hanxv.cn/archives/25.htmlphp
環境:ubuntu16.04, php7.0, apache2html
安裝 phpizegit
- # phpize 是用來擴展 php 擴展模塊的
- # php7.0 的 phpize 包含在 php7.0-dev 裏面
- sudo apt-get install php7.0-dev
- # 使用
- phpize 或 /usr/bin/phpize
安裝 memcachedgithub
- # 安裝依賴
- sudo apt-get install memcached
- sudo apt-get install libmemcached11 libmemcached-dev libmemcachedutil2
* 安裝 memcached 擴展*web
- # 查看 php7.-0 的軟件包
- apt-cache search -n php7.0
- # 下載 memcached 到本地倉庫,並切換到 php7 版本
- git clone https://github.com/php-memcached-dev/php-memcached.git
- cd php-memcached/
- git checkout php7
- # 執行配置文件,注意:這一步可能會出錯,緣由多是缺乏 memcached 依賴, 安裝上面安裝即可
- phpize
- #大寫的注意!!
- ./configure --disable-memcached-sasl
- 注意:ubuntu提示checking for pkg-config... nopkg-config not found
- configure: error: Please reinstall the pkg-config distribution
- 解決:安裝pkg-config
- sudo apt-get install pkg-config
- 再次執行
- ./configure --disable-memcached-sasl 命令便可
- # 編譯安裝
- make && make install
- 編譯安裝完成後會返回 buil completed 提示信息以及你的擴展地址
- ##必定要記住!很重要!返回的擴展地址 Installing shared extensions: /usr/lib/php/20151012/
- #把擴展添加進php中
- vi /etc/php/7.0/fpm/conf.d/memcached.ini
- 寫入:extension=/usr/lib/php/20151012/memcached.so
- vi /etc/php/7.0/apache2/php.ini 中
- 寫入:extension=/usr/lib/php/20151012/memcached.so
- # 執行 phpinfo.php 查看 memcached 是否被添加
Memcache存放Session
一、若是你能修改到服務器配置文件,那就打開打開php.ini(ubuntu php7 在/etc/php/7.0/apache2/php。ini)
- vi /etc/php/7.0/apache2/php.ini
- 重啓服務sudo /etc/init.d/apache2 restart
- 找到session.save_handler,並設爲 session.save_handler = memcache,把session.save_path前面的分號去掉,並設置爲 session.save_path = 「tcp://127.0.0.1:11211″
- session.save_handler = memcache
- session.save_path = 「tcp://127.0.0.1:11211″
- 重啓服務sudo service apache2 restart
查看phpinfo 中的設置apache
以後記得要重啓apache服務器
重啓服務sudo service apache2 restart
查看一下phpinfo()中的 「Registered save handlers」 會有 「files user memcache」 這3個可用。若是沒有的話從新安裝一下或者肯定本身是否有重啓apache服務器。ubuntu
或者某個目錄下的 .htaccess :
php_value session.save_handler 「memcache」
php_value session.save_path 「tcp://127.0.0.1:11211″
再或者在某個一個應用中:centos
ini_set(「session.save_handler」, 「memcache」);
ini_set(「session.save_path」, 「tcp://127.0.0.1:11211″);瀏覽器
注意:
使用多個 memcached server 時用逗號」,」隔開,而且和 Memcache::addServer() 文檔中說明的同樣,能夠帶額外的參數」persistent」、」weight」、」timeout」、」retry_interval」 等等,相似這樣的:」tcp://host1:port1?persistent=1&weight=2,tcp://host2:port2″ 。
服務器
二:php安裝memcace擴展
安裝過程以下所示
- [root@VM_114_93_centos local]# git clone https://github.com/websupport-sk/pecl-memcache memcache
- [root@VM_114_93_centos memcache-3.0.8]# cd memcache
- [root@VM_114_93_centos memcache-3.0.8]# phpize
- [root@VM_114_93_centos memcache-3.0.8]# whereis php-config
- php-config: /usr/bin/php-config /usr/share/man/man1/php-config.1.gz
- [root@VM_114_93_centos memcache-3.0.8]# ./configure --enable-memcache --with-php-config=/usr/bin/php-config --with-zlib-dir
- [root@VM_114_93_centos memcache-3.0.8]# make
- [root@VM_114_93_centos memcache-3.0.8]# make install
- 安裝編譯完成(吐槽,這個資源找了2小時噁心,之後必定要讀php源碼 memcache擴展沒更新到php7,因此之前的一直安裝失敗)
- 安裝成功提示信息,你的擴展位置 Installing shared extensions: /usr/lib/php/20151012/
- 能夠切換進入查看下你的memcache.so 是否有
- cd /usr/lib/php/20151012
- ls
- 提示以下圖
########################################################################
老方法的安裝memcache會報錯!
這段不要操做
這段不要操做
這段不要操做
這段不要操做
這段不要操做
這段不要操做
這段不要操做
若是make完之後報錯以下(是由於
還不支持在 PHP7 下安裝 memcache 擴展,
https://pecl.php.net/package/memcache
2013年以來爲更新過。此路不通只能另想辦法,一樣是到 github 上碰碰運氣。搜索 pecl memcache
https://github.com/search?utf8=%E2%9C%93&q=pecl+memcache&type=Repositories&ref=searchresults
其中第一個(https://github.com/websupport-sk/pecl-memcache)就是想要的,而且代碼已經支持到 PHP7,當即下載代碼編譯:
)
請進行上面的安裝方法。
- make: *** [memcache_pool.lo] Error 1
- 1
是由於沒有安裝zlib,執行如下命令後,從新安裝
- yum -y install zlib-devel
這段不要操做
這段不要操做
這段不要操做
這段不要操做
這段不要操做
這段不要操做
###################################################################
此時就能夠在相關目錄中看到memcache.so
在php.ini中加入如下配置:
- extension=/usr/lib/php/20151012/memcache.so
- 1
而後重啓Apache,看phpinfo中
工做到這裏 完美!看上圖
http://blog.csdn.net/qq_28602957/article/details/52781222
http://www.lnmp.cn/install-memcache-and-memcached-extends-under-php7.html
https://github.com/websupport-sk/pecl-memcache
問題:我phpinfo中已經有了memcache 和memcached擴展
可是沒法new他 提示沒有這個類
答!
請不要使用命令行php test.php 來測試 確定找不到!!!
你用瀏覽器打開一切正常!!!
PHP 鏈接 Memcached
<?php $memcache = new Memcache; //建立一個memcache對象 $memcache->connect('localhost', 11211) or die ("Could not connect"); //鏈接Memcached服務器 $memcache->set('key', 'test'); //設置一個變量到內存中,名稱是key 值是test $get_value = $memcache->get('key'); //從內存中取出key的值 echo $get_value; ?>
查當作功!
接下來就開始使用PHP操做Memcached啦!
1.建立一個Memcached對象
- $m = new Memcached();
- 1
2.傳入一臺或多臺服務器
- //傳入一臺服務器
- $m->addServer('127.0.0.1','11211');
- //傳入多臺服務器
- $servers = array(
- array('127.0.0.1','11211'),
- array('127.0.0.2','11211')
- );
- $m->addServers($servers);
- //查看一下運行狀態
- print_r($m->getStats());
顯示結果爲空。由於報錯了
多臺會報錯的,註釋掉多臺服務器,連接成功