php5.6.29添加protobuf和swoole擴展


(參考的原著地址--http://hello1010.com/php-protobuf)

一、下載安裝protobuf

1、先介紹下protobuf

Protocol Buffers 是一種輕便高效的結構化數據存儲格式,可用於結構化數據串行化,很適合做數據存儲或 RPC 數據交換格式。它可用於通訊協議、數據存儲等領域的語言無關、平台無關、可擴展的序列化結構數據格式。目前只提供了 C++、Java、Python 三種語言的 API。官方不支持PHP,不用擔心,高手在民間。上Github搜索一下就有了。

編譯protobuf擴展

在Google上搜索 protobuf php 可在github上找到兩個與之相關的開源項目,它們是: allegro/php-protobuf 和 drslump/Protobuf-PHP 。在這里主要介紹allegro的編譯方法,drslump我也沒有試過。原著說他電腦編譯不過。(別問為什么,因為drslump的編譯方法在我的電腦上不成功 -_- ||)。

wget https://github.com/allegro/php-protobuf/archive/master.zip
unzip master.zip
cd php-protobuf-master

原著說要安裝 yum install php-devel 但我是用源碼安裝的php所以不用安裝這個。 執行phpize  假如phpize命令找不到的話就到php的安裝目錄下面的bin目錄下面,或者用which phpize查找

phpize (我這里是/data/php/bin/phpize)

我這里執行的時候報錯了:

要安裝autoconf

yum install autoconf

再運行phpize成功

2、編譯安裝

./configure --with-php-config=/data/php/bin/php-config
make
make install

編譯完后會在目錄下面生成一個.so文件

在php的配置文件里面添加這個擴展文件

 

二、下載安裝swoole

1、先介紹下swoole

swoole是PHP的異步、並行、高性能網絡通信引擎,使用純C語言編寫,提供了PHP語言的異步多線程服務器異步TCP/UDP網絡客戶端異步MySQL異步Redis數據庫連接池AsyncTask消息隊列毫秒定時器異步文件讀寫異步DNS查詢。 Swoole內置了Http/WebSocket服務器端/客戶端Http2.0服務器端

除了異步IO的支持之外,Swoole為PHP多進程的模式設計了多個並發數據結構和IPC通信機制,可以大大簡化多進程並發編程的工作。其中包括了並發原子計數器並發HashTableChannelLock進程間通信IPC等豐富的功能特性。

Swoole2.0支持了類似Go語言的協程,可以使用完全同步的代碼實現異步程序。PHP代碼無需額外增加任何關鍵詞,底層自動進行協程調度,實現異步。Swoole可以廣泛應用於互聯網、移動通信、企業軟件、雲計算、網絡游戲、物聯網(IOT)、車聯網、智能家居等領域。 使用PHP+Swoole作為網絡通信框架,可以使企業IT研發團隊的效率大大提升,更加專注於開發創新產品。

2、確認安裝環境

  • 僅支持Linux操作系統,核心代碼兼容FreeBSD,需要調整某些編譯的參數和細節才能通過
  • Linux內核版本2.3.32以上
  • PHP5.3.10以上版本
  • gcc4.4以上版本。核心代碼兼容clang,需要關閉CPU親和設置特性
  • cmake2.4+,編譯為libswoole.so作為C/C++庫時,需要使用cmake

3、安裝配置

有兩種安裝方法,可pecl直接在線安裝,或下載 releases版本的swoole編譯安裝 

(1)、pecl安裝swoole擴展

pecl不可用的請確認php安裝目錄的bin目錄或者確認已加入系統變量

/data/php/bin/pecl install swoole

 (2)、編譯安裝swoole擴展

從此處下載: http://pecl.php.net/package/swoole

# cd swoole
# phpize
# ./configure
# make && make install

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM