编译安装PHP扩展-含swoole扩展安装和升级

编译安装 redis 扩展 - phpredis
编译安装 Swoole 扩展
编译安装 Pcntl 扩展
编译安装 Sockets 扩展
编译安装 Event 扩展
编译安装 MongoDB 扩展
编译安装 Memcache 扩展

成都创新互联是一家专业提供天涯企业网站建设,专注与网站制作、网站建设、成都h5网站建设、小程序制作等业务。10年已为天涯众多企业、政府机构等服务。创新互联专业的建站公司优惠进行中。

编译安装 Redis 扩展

predis,是 PHP 代码实现原生 redis client,采用socket连接,只依赖于 php 解释器,无需安装扩展
phpredis(php extension redis)是 C 编写的 PHP原生扩展,支持 php-fmp 模式下的 redis 持久连接
对比:
功能:区别不大
性能:c 编写的 phpredis 性能理论上要好一点,但是除非执行大量 redis 命令,否则很难有性能上的区别,因为 redis 命令的开销大多在网络传输上,不过在 php-fpm 模式下,phpredis 的持久连接性能会比 predis 性能高出一大截

  1. 下载解压
    sudo wget https://pecl.php.net/get/redis-4.2.0.tgz
    sudo tar -zxvf redis-4.2.0.tgz
    cd redis-4.2.0
  2. phpize 生成配置文件 configure
    # 为了使用方便可创建软连接
    sudo ln -s /usr/local/php/bin/phpize  /usr/bin/phpize
    # 生成配置
    sudo phpize
  3. 配置
    sudo ./configure --with-php-config=/usr/local/php/bin/php-config # 指定配置
  4. 编译 && 安装
    sudo make && sudo make install 
  5. 查看是否生成 redis.so
    ll /usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/redis.so
  6. 成功后配置 php.ini
    sudo vim /usr/local/php/etc/php.ini
    # 添加配置
    extension=redis.so
  7. 测试 - 前提 有可连接的 redis-server
    # 创建文件 sudo touch redis_test.php
connect('127.0.0.1', 6379);
$redis->auth('');
$redis->set('test', 'hello redis');
echo $redis->get('test');

php redis_test.php
打印 hello redis 则表示成功

编译安装 Swoole 4.2.2 扩展

  1. 下载解压
    sudo wget  https://gitee.com/swoole/swoole/repository/archive/v4.2.2.zip
    sudo apt install unzip
    sudo unzip v4.2.2.zip && cd swoole
  2. phpize 生成 ./configure 文件
    sudo phpize

    phpize 作用:
    侦测环境,根据当前 php 信息生成 ./configure 文件
    为编译安装的 php 创建外挂模块,不用再次编译 php
    执行之后会生成 ./configure 文件

  3. 配置
    sudo ./configure --with-php-config=/usr/local/php/bin/php-config # 指定配置,多版本php
  4. 编译 && 测试 && 安装
    sudo make && sudo make test && sudo make install
  5. 查看 swoole.so 是否正常生成
    # 编译完成扩展目录: /usr/local/php/lib/php/extensions 下
    ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/swoole.so
  6. php.ini 配置 swoole.so
    # 查看 php.ini 配置路径 指令
    php -i | grep php.ini
    # 配置
    sudo vim /usr/local/php/etc/php.ini
    extension=swoole.so
  7. 重启 && 查看扩展
    sudo service php-fpm reload
    # 查看
    php -m|grep swoole
    # 查看 swoole 详细配置
    php --ri swoole
  8. 测试
    # touch http_server.php

on('request', function($request, $response){
    $response->end("

Hello Swoole . #".rand(1000, 9999)."

"); }); $http->start(); # 启动 http 服务 php http_server.php # 打开浏览器访问 127.0.0.1:9501 ,页面展示一下内容则表示成功 Hello Swoole . #5912
  1. 升级swoole
    重新下载新版 swoole 按照上边的过程重新走一遍即可,原来的 swoole 不用去管他

编译安装 Pcntl 扩展

Pcntl 是 PHP cli 模式下的多进程扩展,只支持 unix 类系统,源码编译安装 php 时,默认是关闭的,需要在编译时使用 --enable-pcntl 开启
如果已经编译安装 PHP,pecl 是没有提供源码包的,因为源码包已经包含在 PHP 源码中了,只需要到解压的源码目录中去编译安装就好了

  1. 进入源码目录
    cd /usr/local/src/php-7.2.12/ext/pcntl
  2. 生成配置文件
    sudo phpize
  3. 配置
    sudo ./configure --with-php-config=/usr/local/php/bin/php-config
  4. 编译 && 测试 && 安装
    sudo make && sudo make test && sudo make install
  5. 查看 pcntl.so
    ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/pcntl.so
  6. 配置 php.ini
    sudo vim /usr/local/php/etc/php.ini
    extension=pcntl.so
  7. 重启 php-fpm
    sudo service php-fpm reload
  8. 测试 touch pcntl_test.php
 0){
    for ($i=0; $i < 10; $i++) { 
        echo "这是父进程 pid:".$pid.PHP_EOL;
    }
}else{
    for ($i=0; $i <5 ; $i++) { 
        echo "这是子进程 pid:".$pid.PHP_EOL;
    }
}

php pcntl_test.php

编译安装 Sockets 扩展

升级 re2c
sudo upgrade re2c

  1. 进入源码目录
    cd /usr/local/src/php-7.2.12/ext/sockets
  2. 生成 configure 文件
    sudo phpize
  3. 配置
    sudo ./configure --with-php-config=/usr/lcoal/php/bin/php-config
  4. 编译 && 测试 && 安装
    sudo make && sudo make test && sudo make install
  5. 配置 php.ini
    sudo vim /usr/local/php/etc/php.ini
    extension=sockets

编译安装 Event 扩展

LibEvent 是一个 C 语言编写的、轻量级的开源高性能 I/O 框架
支持多种 I/O 多路复用:
epoll、poll、dev/poll、select、kqueue等
支持 I/O 、定时器和信号等事件,支持注册事件优先级
对应扩展 libevent 、event
libevent 不再更新,仅支持 php5, Event 对 php7 支持较好,且提供了面向对象和更多特性

Event Loop : 事件循环/轮询
依赖于 sockets 扩展 --enable-sockets 或者编译安装
event 扩展依赖于 Libevent 库

  • 安装 libevent 库
    # 下载
    sudo wget https://github.com/libevent/libevent/releases/download/release-2.1.8-stable/libevent-2.1.8-stable.tar.gz
    # 解压
    sudo tar -zxvf libevent-2.1.8-stable.tar.gz
    # 配置
    cd libevent-2.1.8-stable
    sudo ./configure --prefix=/usr/local/lib/libenvent-2.1.8
    # 编译
    sudo make
    # 安装
    sudo make install 
  • 安装 event

    1.下载解压

    sudo ln -s /usr/local/php/bin/pecl /usr/bin/pecl
    sudo wget http://pecl.php.net/get/event-2.4.1.tgz
    tar -zxvf event-2.4.1.tgz && cd event-2.4.1/

    2.生成配置 文件 configure

    sudo phpize

    3.配置

    sudo ./configure --with-php-config=/usr/local/php/bin/php-config --with-event-libevent-dir=/usr/local/lib/libenvent-2.1.8/

    4.编译 && 安装

    sudo make && sudo make test && sudo make install

    5.配置 php.ini

    sudo vim /usr/local/php/etc/php.ini
    # 要在 extension=sockets 之后
    extension=event.so

    6.重启

    sudo service php-fpm reload
    php --ri event

    编译安装 Mongodb 扩展

  PHP 有 Mongo 和 Mongodb 两个扩展
  Mongo 已经废弃,不支持 PHP7
  Mongodb 支持 PHP7,且具有 Mongodb 的新特性

1.下载解压

sudo wget http://pecl.php.net/get/mongodb-1.5.3.tgz
sudo tar -zxvf mongodb-1.5.3.tgz && cd /usr/local/src/mongodb-1.5.3

2.生成配置文件 configure

sudo phpize

3.配置

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

4.编译 && 安装

sudo make && sudo make install

5.配置 php.ini

sudo vim /usr/local/php/etc/php.ini
extension=mongodb.so

6.重启 php-fpm

sudo service php-fpm reload

7.查看

php --ri mongodb

本文标题:编译安装PHP扩展-含swoole扩展安装和升级
文章来源:http://scyanting.com/article/jjdddh.html