中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

編譯安裝 PHP 擴展 - 含 swoole 擴展安裝和升級

發布時間:2020-07-27 12:47:33 來源:網絡 閱讀:992 作者:指尖芳華 欄目:web開發

編譯安裝 Redis 擴展 - phpredis
編譯安裝 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 性能高出一大截

  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
<?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 擴展

  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

<?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
  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
<?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

  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
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

图们市| 汶上县| 嘉善县| 古浪县| 日照市| 彰武县| 平乡县| 嵩明县| 遂川县| 昭苏县| 舞钢市| 香格里拉县| 大丰市| 南华县| 察哈| 湘西| 涿鹿县| 卢氏县| 大关县| 澳门| 井陉县| 邹平县| 甘孜县| 思南县| 彭山县| 余庆县| 衡阳市| 友谊县| 积石山| 长宁区| 怀柔区| 广河县| 临颍县| 久治县| 汤阴县| 太原市| 济源市| 合作市| 灯塔市| 诸城市| 青海省|