编译安装 Swoole 扩展
编译安装 Pcntl 扩展
编译安装 Sockets 扩展
编译安装 Event 扩展
编译安装 MongoDB 扩展
编译安装 Memcache 扩展
编译安装 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
- <?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.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
- <?PHP
- use Swoole\Http\Server;
- $http = new Server('127.0.0.1', 9501);
- $http->on('request', function($request, $response){
- $response->end("<h1>Hello Swoole . #".rand(1000, 9999)."</h1>");
- });
- $http->start();
- # 启动 http 服务
- PHP http_server.PHP
- # 打开浏览器访问 127.0.0.1:9501 , 页面展示一下内容则表示成功
- Hello Swoole . #5912
编译安装 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
- <?PHP
- echo "当前进程 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.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
来源: http://www.bubuko.com/infodetail-2865995.html