ホームページ >バックエンド開発 >PHPチュートリアル >PHPで実装されたthriftソケットserver_PHPチュートリアル

PHPで実装されたthriftソケットserver_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:43:271059ブラウズ

php-thrift-server ソース コード
コードは、Apache の thrift プロジェクトから直接クローンされ、github でホストされています:

http://github.com/volca/thrift

新規または変更されたコードは次のとおりです:

lib/php/
`-- src
|-- サーバー
|-- TNonblockingServer.php
| `-- TServer.php
`-- トランスポート
|-- TNonblockingServerSocket.php
|-- TNonblockingSocket.php
検索

git clone git://github.com/volca/thrift.git を使用して、php、apc、libevent 拡張機能をインストールします:

pecl install apc# PHP ソケット サーバーを実行するには、最初に libevent-devel などの libevent とその他のパッケージをインストールする必要があります。 pecl install libevent は、thrift テスト コードから独立して実行されている PHP サーバーを直接変更しました。thrift/test/php/ を参照してください。 TestNonblockingServer.php。これには、テスト ビジネス コードの実装も含まれています。

cd thrift/test/php#thrift コマンド ライン ツールを使用して PHP テスト ライブラリを生成します make#thrift サービスを開始します。これはローカル ポート 9090 をリッスンします php TestNonblockingServer.php クライアント コードも、int などのさまざまなデータ型に対して提供されます、float、string、listなどがテストされます。

php TestClient.phpパフォーマンステスト

apache + phpテスト結果

testvoid()= voidtestString( "test")= "test" testbyte(1)= 1testi32(-1)= -1Testi64(-34359738368)= -34359738368TESTDOUBLE(-852.234234234)= -852.234234 1 , -3, -5}) = {"ゼロ", 1, -3, -5}testNest({1, {"ゼロ", 1, -3, -5}), 5} = {1, {"ゼロ", 1, -3, -5}, 5}testMap({0 => -10, 1 => -9, 2 => -8, 3 => -7, 4 => - 6}) = {0 => -9、2 => -7、4 => -6} , 1, 2}) = {1, 1, 1, 1, 1}testList({-2, -1, 0, 1, 2}) = {-2, -1, 0, 1, 2}testEnum( ONE) = 1testEnum(TWO) = 2testEnum(THREE) = 3testEnum(FIVE) = 5testEnum(EIGHT) = 8testTypedef(309858235082523) = 309858235082523合計時間: 41 msphp + libevent ソケット サーバーのテスト結果

testvoid()= voidtestString( "test")= "test" testbyte(1)= 1testi32(-1)= -1Testi64(-34359738368)= -34359738368TESTDOUBLE(-852.234234234)= -852.234234 1 , -3, -5}) = {"ゼロ", 1, -3, -5}testNest({1, {"ゼロ", 1, -3, -5}), 5} = {1, {"ゼロ", 1, -3, -5}, 5}testMap({0 => -10, 1 => -9, 2 => -8, 3 => -7, 4 => - 6}) = {0 => -9、2 => -7、4 => -6} , 1, 2}) = {1, 1, 1, 1, 1}testList({-2, -1, 0, 1, 2}) = {-2, -1, 0, 1, 2}testEnum( ONE) = 1testEnum(TWO) = 2testEnum(THREE) = 3testEnum(FIVE) = 5testEnum(EIGHT) = 8testTypedef(309858235082523) = 309858235082523合計時間: 8 ミリ秒 このテストでは、長時間のリクエストはなく、処理ロジックは次のとおりです。 php ソケットサーバーの消費時間は、Apache + php のわずか 5 分の 1 です。


倹約とは何ですか?

Thrift はあまり普及していないようで、他のテクノロジーに置き換えられる傾向にあるため、以下に他の記事から紹介文を引用します。

Thrift は、Facebook によって開発されたソフトウェア ライブラリと一連のコード生成ツールで構成されています。目的は、ソフトウェア開発をスピードアップし、効率的でスケーラブルなバックエンド サービスを可能にすることです。主な目標は、異なるプログラミング言語間で効率的かつ信頼性の高い通信を実現することです。そのためには、異なる言語間の共通層を抽象化し、この共通層を異なる言語で実装する必要があります。ここで、Thrift を使用すると、開発者はデータ型とサービス インターフェイス (中立言語ファイルで定義) を定義し、このファイルを使用して RPC クライアントとサーバーの構築に必要なコードを生成できることに注意してください。

そのメカニズムを簡単に分析すると、Thrift は C/S モードを実装し、コード生成ツールを通じてインターフェイス定義ファイルからサーバー側とクライアント側のコード (異なる言語でも可能) を生成し、それによってサーバーのクロス言語サポートを実現します。そしてクライアント。

Thrift はトランスポート層とプロトコル層に分けることができます:

トランスポート層は、TCP/IP 送信、メモリ共有、またはファイル共有の形式でデータ送信方法を定義します。

プロトコル層は、バイナリ ストリームまたは XML の形式でデータ送信形式を定義します。

サーバーがソケット プロトコルを使用する場合、シンプル|スレッドプール|スレッド|ノンブロッキングおよびその他のメソッドで実行して、パフォーマンスを向上させることができます。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/478823.html技術記事 php-thrift-server ソース コードは Apache の thrift プロジェクトから直接複製され、github: http://github.com/volca/thrift でホストされています。新しく追加または変更されたコードは次のとおりです: lib/php/ `-- src。 |- -...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。