linux下安装php扩展memcache

简介:

memcache 的工作就是在专门的机器的内存里维护一张巨大的hash表,来存储经常被读写的一些数组与文件,从而极大的提高网站的运行效率,减轻后端数据库的读写压力。


实验环境:centos 6.6 x86_64

LAMP环境搭建完毕:php版本5.6.8、apache版本2.4.12    

1、在安装memcached之前需要安装libevent支持:

1
2
3
4
5
# wget http://syslab.comsenz.com/downloads/linux/libevent-1.4.12-stable.tar.gz
# tar zxvf libevent-1.4.12-stable.tar.gz 
# cd libevent-1.4.12-stable
#./configure --prefix=/usr/local/libevent
#make && make install

2、服务器端 memcached 的编译安装

1
2
3
4
5
# wget http://syslab.comsenz.com/downloads/linux/memcached-1.4.5.tar.gz
# tar zxvf memcached-1.4.5.tar.gz 
# cd  memcached-1.4.5
# ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent/
# make && make install


3、客户端安装memcache步骤: 

1
2
3
4
5
6
#  wget http://www.lishiming.net/data/attachment/forum/memcache-2.2.3.tgz
# tar zxvf memcache-2.2.3.tgz
# cd memcache-2.2.3
# /usr/local/php/bin/phpize
# ./configure --with-php-config=/usr/local/php/bin/php-config --enable-memcache
# make

执行make后报错如下:

1
2
3
4
5
6
7
8
9
10
11
12
/usr/local/src/memcache-2 .2.3 /memcache .c: 在函数‘php_mmc_connect’中:
/usr/local/src/memcache-2 .2.3 /memcache .c:1902: 错误:提供给函数‘zend_list_insert’的实参太少
/usr/local/src/memcache-2 .2.3 /memcache .c:1919: 错误:提供给函数‘zend_list_insert’的实参太少
/usr/local/src/memcache-2 .2.3 /memcache .c: 在函数‘zif_memcache_add_server’中:
/usr/local/src/memcache-2 .2.3 /memcache .c:1975: 错误:提供给函数‘zend_is_callable’的实参太少
/usr/local/src/memcache-2 .2.3 /memcache .c:2003: 错误:提供给函数‘zend_list_insert’的实参太少
/usr/local/src/memcache-2 .2.3 /memcache .c: 在函数‘zif_memcache_set_server_params’中:
/usr/local/src/memcache-2 .2.3 /memcache .c:2059: 错误:提供给函数‘zend_is_callable’的实参太少
/usr/local/src/memcache-2 .2.3 /memcache .c: 在函数‘mmc_find_persistent’中:
/usr/local/src/memcache-2 .2.3 /memcache .c:2159: 错误:提供给函数‘zend_list_insert’的实参太少
/usr/local/src/memcache-2 .2.3 /memcache .c:2177: 错误:提供给函数‘zend_list_insert’的实参太少
make : *** [memcache.lo] 错误 1

根据错误,进行修改:

vi memcache.c

将所有的:zend_list_insert(pool, le_memcache_pool); 

改为:zend_list_insert(pool, le_memcache_pool TSRMLS_CC);


将所有的:zend_list_insert(mmc, le_pmemcache);

改为:zend_list_insert(mmc, le_pmemcache TSRMLS_CC);

讲所有的:if (!zend_is_callable(failure_callback, 0, NULL))

改为:if (!zend_is_callable(failure_callback, 0, NULL, NULL))

修改完成后,重新make编译;

1
2
# make install
Installing shared extensions:      /usr/local/php/lib/php/extensions/no-debug-zts-20131226/

安装完成后的memcache.so模块在上面的路径中;

# vi /usr/local/php/etc/php.ini 

在最后一行添加:extension="memcache.so"

保存退出后,重启apache,使用php -m查看已经安装的memcache模块,或者在浏览器访问phpinfo.php查看;



启动memcached服务端:

# /usr/local/memcached/bin/memcached -d -u root -m 256 -p 11211 -l localhost

-d   是启动一个守护进程,

-m  后边指定memecached使用多少内存,单位是M

-p  指定memcached 启动端口

-l  指定绑定的IP

-u  指定以某个账户的身份启动

启动后报错,找不到libevent模块;

/usr/local/memcached/bin/memcached: error while loading shared libraries: libevent-1.4.so.2: cannot open shared object file: No such file or directory

需要把 libevent-1.4.so.2 拷贝或链接到 /usr/lib64 (x86_64位系统,32位的为/usr/lib目录)中,否则 memcached 无法正常加载。

# cp /usr/local/libevent/lib/libevent-1.4.so.2 /usr/lib64


memcache环境测试,写一个php文件,在网站根目录下

1
2
3
4
5
6
7
[root@localhost htdocs] # cat 1.php 
<?php
$mem = new Memcache;
$mem->connect( "localhost" , 11211);
$mem-> set ( 'test' , 'hello world' ,0,60);
echo  $mem->get( 'test' );
?>

使用curl或者网页访问IP/1.php如果显示hello world 说明配置成功。

1
2
# curl -xlocalhost:80 192.168.4.231/1.php
hello world

spacer.gifwKiom1Wt82PBkZ6jAAA5_R0aP0Y138.jpg






本文转自 模范生 51CTO博客,原文链接:http://blog.51cto.com/mofansheng/1676746,如需转载请自行联系原作者
目录
相关文章
|
9天前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
8天前
|
Ubuntu Linux Shell
Linux系统命令 安装和文件相关命令
本文档详细介绍了Linux系统中的常用命令,包括软件安装卸载命令如`dpkg`和`apt-get`,压缩与解压命令如`gzip`、`bzip2`和`xz`,以及`tar`命令用于打包和解包。此外还介绍了文件分割命令`split`,文件操作命令如`cat`、`head`、`tail`、`more`、`less`等,管道命令和`wc`、`grep`、`find`、`cut`、`sort`、`uniq`、`diff`等实用工具。最后,文档还讲解了文件属性相关的命令如`chmod`、`chown`、`chgrp`以及创建硬链接和软链接的`ln`命令。
|
14天前
|
安全 前端开发 PHP
PHP与现代Web开发:构建高效和可扩展的应用程序
【8月更文挑战第29天】在这篇文章中,我们将深入探讨PHP如何适应现代Web开发的需求。我们将通过实际案例分析,揭示PHP的核心优势,并展示如何利用这些优势来构建高性能、可扩展的Web应用。文章不仅提供理论知识,还包括具体的代码示例,旨在帮助开发者更好地理解和运用PHP解决实际问题。
|
14天前
|
Linux TensorFlow 算法框架/工具
在Linux上安装其他版本的cmake 或 升级cmake
在Linux上安装其他版本的cmake 或 升级cmake
23 2
|
14天前
|
人工智能 Linux 开发工具
Linux安装Taiyi stable-diffusion-webui
Linux安装Taiyi stable-diffusion-webui
|
15天前
|
Ubuntu Linux 虚拟化
安装Windows Linux 子系统的方法:适用于windows 11 版本
本文提供了在Windows 11系统上安装Linux子系统(WSL)的详细步骤,包括启用子系统和虚拟化功能、从Microsoft Store安装Linux发行版、设置WSL默认版本、安装WSL2补丁,以及完成Ubuntu的首次安装设置。
51 2
|
15天前
|
SQL 关系型数据库 MySQL
PHP与数据库交互的艺术:深入探讨PDO扩展
【8月更文挑战第28天】在数字信息时代的海洋里,PHP作为一艘灵活的帆船,承载着无数网站和应用的梦想。而PDO扩展,则是这艘帆船上不可或缺的导航仪,指引着数据安全与效率的航向。本文将带你领略PHP与数据库交互的艺术,深入浅出地探索PDO的世界,从连接数据库到执行复杂的查询,每一步都清晰可见。我们将一起航行在这段奇妙的旅程上,解锁数据的奥秘,体验编程的乐趣。
13 1
|
17天前
|
存储 监控 Linux
|
18天前
|
应用服务中间件 Linux 网络安全
【Azure 应用服务】PHP应用部署在App Service for Linux环境中,上传文件大于1MB时,遇见了413 Request Entity Too Large 错误的解决方法
【Azure 应用服务】PHP应用部署在App Service for Linux环境中,上传文件大于1MB时,遇见了413 Request Entity Too Large 错误的解决方法
|
18天前
|
Linux PHP
【Azure 应用服务】PHP项目部署到App Service for Linux环境中,如何修改上传文件大小的限制呢?
【Azure 应用服务】PHP项目部署到App Service for Linux环境中,如何修改上传文件大小的限制呢?