2017-02-23 13 views
0

私は最近、Javaのリプレイサーバーによって実装されたいくつかのサービスを呼び出すためにPHPのリフトクライアントを使用します。倹約php libのパフォーマンスの問題

しかし、私は、複雑な大量のデータを転送する場合、PHPは時間シリアライズの多くを過ごしたので、TBinaryProtocol::readXXX()またはTBinaryProtocol::writeXXX() のコールの数万人のデータをデシリアライズことがわかりました。

これを最適化する良いアイデアはありますか?

+0

Thriftでバグや問題が疑われる場合は、この[mailngリスト](https://thrift.apache.org/mailing)で議論することをお勧めします。 – JensG

答えて

1

TBufferedTransportまたはTFramedTransportが役立ちます。前者はI/Oコールを減らすためのバッファのみを有し、後者はワイヤデータを変更することによってトランスポートスタックを変更する(すなわち、データブロックの全長を保持するInt32が最初に挿入される)。

したがって、TBufferedTransportは純粋にローカルなものです。対照的に、TFramedTransportはクライアントとサーバーの両方で使用する必要があります。それとは別に、両者は非常によく似た働きをしています。

さらに、使用可能なサーバーの種類によってはTFramedTransportが必要なので、新しいAPIの場合は最初からTFramedTransportを追加することをお勧めします。

+0

ありがとうございます。私は、PHP拡張モジュールthrift_protocolでTBinaryProtocolAcceleratedを使うのが最善の方法だと分かりました。 –