dryu999 发表于 2018-12-24 11:15:20

【Memcached】02、memcached的应用

  

  上一篇我们学习了memcached的理论和安装,那memcached应该怎么应用呢,不可能手动使用telnet连上memcached服务器来管理缓存吧,那memcached是如何应用的呢?
  程序员在开发程序时,自行调用了memcached的API,memcached的缓存功能才能生效

Memcached的各客户端程序:
      Memcached:服务器
      memcached:php连接Memacached服务可以使用的扩展(新,性能更好)
      memcache:php连接memcache服务可以使用的另一个扩展(旧)
libmemcached:c库
  

  一、安装Memcached的PHP扩展
1、环境
这里我使用之前安装好的LNMMP环境
Node1:php-fpm 7.1.1
Node2:Mariadb 10.0.20
Node7:nginx 1.10.3
Node5:Memcached 1.4.35
    各安装过程可以查看之前的文章


2、memcache简介
  PHP有两个memcached客户端扩展memcache和memcached。memcache是老客户端(2013年停止更新了),从我们实践中已发现有多个问题,而且功能少,属性也可设置的少,memcached是基于原生的c的libmemcached的扩展,更加完善,建议使用memcached。

  

  什么是PEAR
       PEAR的全称是PHP Extension and Application Repository,是PHP的扩展库,采用PHP语言编写。所以我们可以直接下载,并在我们的代码中包含(include)扩展库。
  什么是PECL
  PECL的全称是PHP Extension Community Library,它也是PHP的扩展库。PECL的扩展都是采用C语言编写的,可以被载入PHP中,给PHP增加额外的功能,比如PHP的Mongo扩展。
  memcache和memcached都是PECL中的项目
  

  3、安装php的memcached扩展
# tar xf memcached-3.0.3-php.tgz
# cd memcached-3.0.3
# ls
ChangeLog   g_fmt.c            php_libmemcached_compat.cphp_memcached_server.c   tests
config.m4   g_fmt.h            php_libmemcached_compat.hphp_memcached_server.h
config.w32LICENSE            php_memcached.c            php_memcached_session.c
CREDITS   memcached-api.phpphp_memcached.h            php_memcached_session.h
fastlz      memcached.ini      php_memcached_private.h    README.markdown
###此时没有configure文件,都说了是扩展当前是作为php的插件(模块)运行
# /usr/local/php/bin/phpize
                                 # 如果是yum安装的php,要安装了php-devel包才有这个命令
Configuring for:
PHP Api Version:         20160303
Zend Module Api No:      20160303
Zend Extension Api No:   320160303
# ./configure --with-php-config=/usr/local/php/bin/php-config --enable-memcached遇到报错:
checking for libmemcached location... configure: error: memcached support requires libmemcached. Use --with-libmemcached-dir= to specify the prefix where libmemcached headers and library are located安装依赖了包libmemcached-devel还是报错
configure: error: no, libmemcached sasl support is not enabled. Run configure with --disable-memcached-sasl to disable this check只能编译安装新版本的libmemcached,并启用sasl功能

  

  解决步骤:


1)安装sasl
    yum install cyrus-sasl


2)编译安装libmemcached并启用sasl功能
   tar xf libmemcached-1.0.18.tar.gz
   cd libmemcached-1.0.18
./configure --prefix=/usr/local/libmemcached --enable-sasl
   make
   make install

libMemcached则是基于C语言开发的开源的C/C++代码访问memcached的库文件,同时,它还提供了数个可以远程使用的memcached管理工具,如memcat, memping,memstat,memslap等。




3)安装memcached安装
# ./configure --with-php-config=/usr/local/php/bin/php-config --with-libmemcached-dir=/usr/local/libmemcached/ --enable-memcached-sasl
# make
# make install
Installing shared extensions:   /usr/local/php/lib/php/extensions/no-debug-zts-20160303/
       # 这个生成的库文件路径要配置在php的配置文件中,方便php找到该插件编辑/etc/php.ini,在“动态模块”相关的位置添加如下一行来载入memcache扩展:

  extension=/usr/local/php/lib/php/extensions/no-debug-zts-20160303/memcached.so
  并重新加载php-fpm的配置文件
  查看phpinfo页面可以看到已经有了memcached扩展:

https://s3.运维网.com/wyfs02/M02/8E/8E/wKioL1jFQSvyyy0yAACOk5hSNMM257.png
而后对memcached功能进行测试,在网站目录中建立测试页面test.php,添加如下内容:
  网上相关的文档都是使用memcache,这个测试只能自己照着php手册上的介绍自己随便写个了
# vim test.php
测试:
   https://s5.运维网.com/wyfs02/M02/8E/96/wKiom1jGM7yACFzHAABQX7XUkuY043.png
      看了半天都不知道这个怎样输出才会换行
  使用php的memcached扩展目的是在php程序中调用memcached的接口,通过缓存数据库查询的结果,减少数据库访问次数,以提高动态Web应用的速度、 提高可扩展性。
  

安装Memcache for PHP Module
(1)解压编译


   view plain copy print?

[*]  tar -zxvf memcache-3.0.6.tgz
[*]  cd memcache-3.0.6
[*]  /usr/local/bin/phpize
[*]  ./configure --enable-memcache --with-php-config=/usr/local/php5/bin/php-config --with-zlib-dir
[*]  make
[*]  make install


使用php的memcache扩展测试和memcached服务器所使用的代码:
页: [1]
查看完整版本: 【Memcached】02、memcached的应用