memcache是一套分布式的快取記憶體系統,很多**都在使用memcache,以提高**的訪問速度。最近,遇到了乙個比較頭痛的問題。
首先,分離出關鍵的**:
$mc=new memcached();
$mc->addserver("www.***.com",11711); 為未解析的host
$mc->get("fffffff");
執行該php指令碼,發現報了segmentation fault錯誤,為啥?
使用gdb跟蹤程式,找到了報錯的**:
libmemcached-0.44/libmemcached/connect.c:line400
if ((ptr->fd= socket(use->ai_family,
use->ai_socktype,
use->ai_protocol)) < 0)
segmentation 說明錯誤是非法訪問記憶體區域,可以判斷use的某個元素為null(ps:由於編譯優化,gdb無法列印詳細的值,這塊等以後有空在檢查了)
翻查了一下php關於memcahed的介紹,也找到了問題所在(
說說我php的環境配置吧,也最終確認了問題所在。php官網上已經說明了,memcached擴充套件,必須使用libmemcached大於1.0的版本。(ps:這裡插一句,如果使用的是memcache擴充套件,不會出現改問題,原因是memcache擴充套件使用的是libmemcache系統庫)
php版本
libmemcached版本
是否出現問題
5.2.14
libmemcached-0.44
是5.4.41
libmemcached-1.0.18否
總結:環境配置,按照官方說明配置,並編寫文件規範。
LNMP環境PHP7 memcached擴充套件安裝
以下是安裝memcached擴充套件 所需軟體包 libmemcached 1.0.9 2 tar zxvf 解壓 3 cd 進入對應目錄 4 configure 5 make make install 1 tar zxf 解壓 2 cd 進入對應目錄 3 usr local php bin php...
linux php安裝memcached擴充套件
在linux 編譯,需要gcc,make,cmake,autoconf,libtool 等工具,需提前安裝好。memcached的安裝包括 1 服務端的安裝 2 客戶端的安裝 一 伺服器端安裝 方法一 memcached 依賴於libevent 庫,因此我們需要先安裝libevent.假設將原始碼放...
Memcached學習 安裝 使用 PHP
libevent memcached依賴於libevent庫,因此需要先安裝 libevent cd libevent 2.1.12 stable configure prefix usr local libevent make make install memcached cd memcached...