Centos 6.* 安装 Swoole 4.1.1并支持异步redis 还有问题

13 篇文章 1 订阅
8 篇文章 0 订阅

在安装lnmp之前要先把gcc升级到4.8以上,安装swoole,就轻松多了

gcc 4.8 安装

curl -Lks http://www.hop5.in/yum/el6/hop5.repo >/etc/yum.repos.d/hop5.repo

yum install gcc gcc-g++ -y

gcc --version

g++ --version

安装Redis和php的Redis扩展

         

1、安装Redis

1.1 如果没有安装wget,安装wget

yum install wget  

1.2 在http://redis.io/download页面查看redis版本,并下载安装

wget http://download.redis.io/releases/redis-3.2.0.tar.gz

1.3 解压,并进入解压目录进行编译。编译成功后会在redis-3.2.0目录下生成相关文件

$ tar xzf redis-3.2.0.tar.gz
$ cd redis-3.2.0
$ make

如果make时没有发现gcc,那么安装gcc

yum install gcc gcc-c++ kernel-devel  

再次make,如果出现如下错误

zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory
zmalloc.h:55:2: error: #error "Newer version of jemalloc required"

则使用如下命令进行make

make MALLOC=libc

1.4 在文件夹redis-3.2.0下启动redis服务,输入如下命令后回车。

./src/redis-server redis.conf &

1.4 检测

复制代码

#检测后台进程是否存在
ps -ef |grep redis

#检测6379端口是否在监听
netstat -lntp | grep 6379

#使用`redis-cli`客户端检测连接是否正常
./src/redis-cli
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set key "hello world"
OK
127.0.0.1:6379> get key
"hello world"

复制代码

1.5 停止服务

#使用客户端
./src/redis-cli shutdown
#因为Redis可以妥善处理SIGTERM信号,所以直接kill -9也是可以的
kill -9 PID

 

2、安装Redis的PHP扩展

2.1 安装phpize

yum install php-devel  

2.2 下载扩展源码包,直接用wget

#wget下载github上的文件  
wget https://github.com/nicolasff/phpredis/archive/master.zip  

2.3 如果没装unzip,需要先安装unzip

yum install unzip 

2.4 解压master.zip

unzip master.zip

2.5 解压目录为phpredis-master,进入该文件夹,开始编译php扩展

phpize

2.6 配置环境

./configure  

./configure --with-php-config=/usr/local/php/bin/php-config

2.7 编译

make && make install 

编译完成后显示:

Build complete.  
Don't forget to run 'make test'.  
Installing shared extensions:     /usr/lib64/php/modules/ 

进入/usr/lib64/php/modules/文件夹,发现redis.so的扩展

2.8 修改/etc/php.ini,添加下面的扩展

extension=redis.so 

2.9 重启服务器

service httpd restart

这里php7会出错,下载https://github.com/edtechd/phpredis重新编译

最后查看phpinfo,显示如下,代表安装成功:

3、PHP代码测试

复制代码

<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->set('name','zhou', 10);
$key_1 = $redis->get('name');
echo $key_1;
?>

 

升级gcc版本为:7.2.0

https://blog.csdn.net/guo_lei_lamant/article/details/79591986 centos7升级GCC4.8.5到GCC4.9.0

 

原因:安装swoole扩展时出现---> error "GCC 4.8 or later required

2、安装依赖包

isl-0.16.1.tar.bz2

gmp-6.1.0.tar.bz2

mpfr-3.1.4.tar.bz2

mpc-1.0.3.tar.bz2

依赖包下载地址:ftp://gcc.gnu.org/pub/gcc/infrastructure/

Swoole 4.1.1 安装

  1. 下载swoole源码

git clone https://gitee.com/swoole/swoole.git

2.编译

cd swoole && phpize ==> 生成configure 文件

./configure --with-php-config=/usr/local/php/bin/php-config

--with-php-config 后面的地址,根据自己的环境,替换为正确的地址

出现:configure: error: C compiler cannot create executables

在这之前我做了export CFLAGS+=-g和 export CFLAGS+=-g3
这样的一系列操作,然后才开始执行 ./configure,结果就出现了上面的错误提示。而我记得之前也执行了 exprot CFLAGS=-g然后执行./configure 是没有问题的。很是奇怪,去网上搜了一下,说是CFLAGS影响了./configure的执行,然后使用 export CFLAGS= 来清除CFLAGS,重新赋值 export CFLAGS=-g,之后再执行./configure就没有问题了。

make && make install

[root@local swoole]# make install
Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/
Installing header files:          /usr/local/php/include/php/
[root@local swoole]# ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/
opcache.a  opcache.so  redis.so  swoole.so

将 swoole.so 再php.ini中配置好,然后重启 php-fmp

service php-fpm restart

php -m 查看列表是否已经有swoole

或者php --ri swoole 也可以直接这样用

安装 hireids 让 swoole 支持 异步redis

wget https://github.com/redis/hiredis/archive/v0.14.0.tar.gz && tar -zxvf v0.14.0.tar.gz && cd hiredis-0.14.0/ && make -j && make install && ldconfig

重新编译swoole

./configure --with-php-config=/usr/local/php/bin/php-config --enable-swoole-debug --enable-async-redis && make clean && make && make install

可能遇到的问题
php-m发现swoole或者消失的英文通过php --ri swoole没有显示async redis clientredis client

vi ~/.bash_profile
在最后一行添加

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

source ~/.bash_profile

重新编译安装swoole即可

测试脚本

class AysRedis
{
    const HOST = '127.0.0.1';
    const PORT = 6379;
    public $redis_client = null;

    function __construct()
    {
        $this->redis_client = new swoole_redis;
    }

    /**
     * 闭包里不好直接用变量,要用use
     * @return bool
     */
    public function execute($id, $username)
    {
        $this->redis_client->connect(self::HOST, self::PORT, function ($redis_client, $result) use ($id, $username) {
            if ($result === false) {
                var_dump($redis_client->connect_errno, $redis_client->connect_error);
                die;
            }
            var_dump('wawa');
            //设置值
            $redis_client->set('wawa', time(), function (swoole_redis $redis_client, $result){
                //设置是否成功的返回值
                var_dump($result);
            });
            //取值
            $redis_client->get('wawa', function (swoole_redis $redis_client, $result){
                var_dump($result);
            });
            //取所有值
            $redis_client->keys('*', function (swoole_redis $redis_client, $result){
                var_dump($result);
            });
            //模糊匹配KEY
            $redis_client->keys('*l*', function (swoole_redis $redis_client, $result){
                var_dump($result);
            });
            $redis_client->close();

        });
        return true;
    }

}

$ws = new AysRedis();
$result = $ws->execute(1, 'test');
print_r($result.PHP_EOL);
echo 'start:'.PHP_EOL;




链接:https://www.jianshu.com/p/58a3bd85ba4c
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值