Centos 6.* 安装 Swoole 4.1.1

升级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)