美文网首页
Centos 6.* 安装 Swoole 4.1.1

Centos 6.* 安装 Swoole 4.1.1

作者: peijiyang | 来源:发表于2018-09-29 15:52 被阅读0次
    升级gcc版本为:7.2.0

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

    https://blog.csdn.net/lanwilliam/article/details/77893033 CentOS 6通过yum安装gcc 4.9 5.2等高版本gcc [此处好使]

    https://blog.csdn.net/chenjia6605/article/details/82757568 CentOS7 编译安装GCC 8.2.0

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

    // 一下方式可以忽略,实验失败

    1.wget https://mirrors.ustc.edu.cn/gnu/gcc/gcc-7.2.0/gcc-7.2.0.tar.gz && tar -zxvf gcc-7.2.0.tar.gz && cd gcc-7.2.0

    2../contrib/download_prerequisites

    如果不成功可以手动下载依赖
    yum install gmp-devel                              // 編譯依賴此庫  
    yum install mpfr-devel                             // 編譯依賴此庫  
    yum install libmpc-devel                         // 編譯依賴此庫  
    当然以上库可以在ftp://gcc.gnu.org/pub/gcc/infrastructure/下载
    下载isl-0.18.tar.bz2                                  // yum 没有这个库源码安装
    wget ftp://gcc.gnu.org/pub/gcc/infrastructure/isl-0.18.tar.bz2
    tar -jxvf isl-0.18.tar.bz2
    cd isl-0.18 
    ./configure   
    make  
    make install
    
    
    

    建立一个目录供编译出的文件存放
    mkdir gcc-build-7.3.0 && cd gcc-build-7.3.0

    yum groupinstall "Development Tools"

    yum -y install glibc-static libstdc++-static(这两个是必要的开发环境)

    ../configure --prefix=/usr/local/gcc7 --enable-languages=c,c++,go --disable-multilib // 指定gcc7安裝地址,指定所需安裝語言,不支持32位
    make -j4 (-j4选项是make对多核处理器的优化,如果不成功请使用
    make,相关优化选项可以移步至参考文献[2]。建议不要使用make -j来编译,虽然可以缩短编译时间,但极大可能会编译失败) 过程很慢

    make install((安装需要root权限!))

    查看版本

    [root@local usr]# gcc -v
    Using built-in specs.
    COLLECT_GCC=gcc
    Target: x86_64-pc-linux-gnu
    Configured with: ../configure --prefix=/usr/local/gcc7 --enable-languages=c,c++,go --disable-multilib
    Thread model: posix
    gcc version 7.2.0 (GCC)
    

    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

    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;
    
    
    

    相关文章

      网友评论

          本文标题:Centos 6.* 安装 Swoole 4.1.1

          本文链接:https://www.haomeiwen.com/subject/lpcboftx.html