编译安装 PHP 扩展 - 含 swoole 扩展安装和升级
编译安装 Redis 扩展编译安装 Redis 扩展 - phpredis
编译安装 Swoole 扩展
编译安装 Pcntl 扩展
编译安装 Sockets 扩展
编译安装 Event 扩展
编译安装 Mongodb 扩展
编译安装 Memcache 扩展
下载解压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.tgzsudo tar -zxvf redis-4.2.0.tgzcd 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
<?php$redis = new Redis() or die("can't load redis modules");$redis->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.zipsudo apt install unzipsudo 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.iniextension=swoole.so
重启 && 查看扩展
sudo service php-fpm reload# 查看php -m|grep swoole# 查看 swoole 详细配置php --ri swoole
测试
# touch http_server.php
<?php use Swoole\Http\Server;$http = new Server('127.0.0.1', 9501);$http->on('request', function($request, $response){ $response->end("<h2>Hello Swoole . #".rand(1000, 9999)."</h2>");});$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.iniextension=pcntl.so
重启 php-fpm
sudo service php-fpm reload
测试 touch pcntl_test.php
<?phpecho "当前进程 id:".getmypid().PHP_EOL;// 创建进程$pid = pcntl_fork();if ($pid < 0) { exit('fork fail'.PHP_EOL);}else if($pid > 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.iniextension=sockets
编译安装 Event 扩展
安装 libevent 库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 库
# 下载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-stablesudo ./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/peclsudo wget http://pecl.php.net/get/event-2.4.1.tgztar -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 reloadphp --ri event
编译安装 Mongodb 扩展
PHP 有 Mongo 和 Mongodb 两个扩展 Mongo 已经废弃,不支持 PHP7 Mongodb 支持 PHP7,且具有 Mongodb 的新特性
1.下载解压
sudo wget http://pecl.php.net/get/mongodb-1.5.3.tgzsudo 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.iniextension=mongodb.so
6.重启 php-fpm
sudo service php-fpm reload
7.查看
php --ri mongodb
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。