编译安装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 性能高出一大截
- 下载解压
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
- phpize 生成配置文件 configure
# 为了使用方便可创建软连接 sudo ln -s /usr/local/php/bin/phpize /usr/bin/phpize # 生成配置 sudo phpize
- 配置
sudo ./configure --with-php-config=/usr/local/php/bin/php-config # 指定配置
- 编译 && 安装
sudo make && sudo make install
- 查看是否生成 redis.so
ll /usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/redis.so
- 成功后配置 php.ini
sudo vim /usr/local/php/etc/php.ini # 添加配置 extension=redis.so
- 测试 - 前提 有可连接的 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 扩展
- 下载解压
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
- phpize 生成 ./configure 文件
sudo phpize
phpize 作用:
侦测环境,根据当前 php 信息生成 ./configure 文件
为编译安装的 php 创建外挂模块,不用再次编译 php
执行之后会生成 ./configure 文件 - 配置
sudo ./configure --with-php-config=/usr/local/php/bin/php-config # 指定配置,多版本php
- 编译 && 测试 && 安装
sudo make && sudo make test && sudo make install
- 查看 swoole.so 是否正常生成
# 编译完成扩展目录: /usr/local/php/lib/php/extensions 下 ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/swoole.so
- php.ini 配置 swoole.so
# 查看 php.ini 配置路径 指令 php -i | grep php.ini # 配置 sudo vim /usr/local/php/etc/php.ini extension=swoole.so
- 重启 && 查看扩展
sudo service php-fpm reload # 查看 php -m|grep swoole # 查看 swoole 详细配置 php --ri swoole
- 测试
# 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
- 升级swoole
重新下载新版 swoole 按照上边的过程重新走一遍即可,原来的 swoole 不用去管他
编译安装 Pcntl 扩展
Pcntl 是 PHP cli 模式下的多进程扩展,只支持 unix 类系统,源码编译安装 php 时,默认是关闭的,需要在编译时使用 --enable-pcntl 开启
如果已经编译安装 PHP,pecl 是没有提供源码包的,因为源码包已经包含在 PHP 源码中了,只需要到解压的源码目录中去编译安装就好了
- 进入源码目录
cd /usr/local/src/php-7.2.12/ext/pcntl
- 生成配置文件
sudo phpize
- 配置
sudo ./configure --with-php-config=/usr/local/php/bin/php-config
- 编译 && 测试 && 安装
sudo make && sudo make test && sudo make install
- 查看 pcntl.so
ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/pcntl.so
- 配置 php.ini
sudo vim /usr/local/php/etc/php.ini extension=pcntl.so
- 重启 php-fpm
sudo service php-fpm reload
- 测试 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
- 进入源码目录
cd /usr/local/src/php-7.2.12/ext/sockets
- 生成 configure 文件
sudo phpize
- 配置
sudo ./configure --with-php-config=/usr/lcoal/php/bin/php-config
- 编译 && 测试 && 安装
sudo make && sudo make test && sudo make install
- 配置 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