PHP Fatal error: Class ‘Memcache’ not found

使用laradock构建镜像时报错误, Memcache

Memcache是什么?

Memcache是一个自由和开放源代码、高性能、分配的内存对象缓存系统。用于加速动态web应用程序,减轻数据库负载。它可以应对任意多个连接,使用非阻塞的网络IO。由于它的工作机制是在内存中开辟一块空间,然后建立一个Hash表,Memcached自管理这些Hash表。

Memcached是简单而强大的。它简单的设计促进迅速部署,易于发展所面临的问题,解决了很多大型数据缓存。它的API可供最流行的语言。

Memcache官方网站:http://memcached.org/

Memcached又是什么?

Memcache是该系统的项目名称,Memcached是该系统的主程序文件(字母d可以理解为daemon),以守护程序方式运行于一个或多个服务器中,随时接受客户端的连接操作,使用共享内存存取数据

修复处理

1.打开php-fpm/Dockerfile 文件大概在320行-或搜索关键字INSTALL_MEMCACHED 修改

原件部分代码

    && ( \  
        cd memcached \
        && phpize \
        && ./configure \
        && make -j$(nproc) \
        && make install \
    ) \
    && rm -r memcached \
    && rm /tmp/memcached.tar.gz \
    && docker-php-ext-enable memcached\
;fi

修改后代码

...
    && ( \  
        cd memcached \
        && phpize \
        && ./configure \
        && make -j$(nproc) \
        && make install \
    ) \
    && rm -r memcached \
    && rm /tmp/memcached.tar.gz \
    && pecl install memcache \
    && docker-php-ext-enable memcached memcache \
;fi
...

2.重新docker-compose build php-fpm

测试代码

<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
$memcache = new Memcached;             //创建一个memcache对象
$memcache->connect('memcached', 11211) or die ("Could not connect"); //连接Memcached服务器
$memcache->set('key', 'test');        //设置一个变量到内存中,名称是key 值是test
$get_value = $memcache->get('key');   //从内存中取出key的值

相关资料

memcache和memcached区别
PHP 连接 Memcached 服务
pecl-memcache

发表评论