编译安装 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.tgz
sudo tar -zxvf redis-4.2.0.tgz
cd redis-4.2.0
# 为了使用方便可创建软连接
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
ll /usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/redis.so
sudo vim /usr/local/php/etc/php.ini
# 添加配置
extension=redis.so
<?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 则表示成功
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
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
# 编译完成扩展目录: /usr/local/php/lib/php/extensions 下
ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/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
<?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
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
ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/pcntl.so
sudo vim /usr/local/php/etc/php.ini
extension=pcntl.so
sudo service php-fpm reload
<?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
升级 re2c
sudo upgrade re2c
cd /usr/local/src/php-7.2.12/ext/sockets
sudo phpize
sudo ./configure --with-php-config=/usr/lcoal/php/bin/php-config
sudo make && sudo make test && sudo make install
sudo vim /usr/local/php/etc/php.ini
extension=sockets
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-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
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
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。