2017-02-23 6 views
0

나는 최근에 PHP thrift 클라이언트를 사용하여 java thrift 서버에서 구현 한 일부 서비스를 호출합니다.Thrift php lib 성능 문제

하지만 난 복잡한 많은 양의 데이터를 전송할 때, PHP는 시간 직렬화을 많이 소비 때문에 TBinaryProtocol::readXXX() 또는 TBinaryProtocol::writeXXX() 통화 수만의 데이터를 역 직렬화 것을 발견했다.

이것을 최적화하는 데 유용한 아이디어가 있습니까?

+0

Thrift에서 버그 또는 문제가 의심되는 경우 [mailng lists] (https://thrift.apache.org/mailing)에서 이에 대한 논의를 제안합니다. – JensG

답변

1

TBufferedTransport 또는 TFramedTransport이 도움이 될 수 있습니다. 전자는 I/O 호출을 줄이기위한 버퍼 만 가지고 있으며, 후자는 와이어 데이터 (즉, 데이터 블록의 전체 길이를 보유하는 Int32가 처음에 삽입 됨)를 수정하여 전송 스택을 변경합니다.

따라서 TBufferedTransport은 순전히 로컬 일 뿐이며 클라이언트와 서버 모두에서 TFramedTransport을 사용해야합니다. 그 외에도, 둘 다 매우 유사하게 작동합니다.

또한 사용할 수있는 서버 유형 중 일부는 TFramedTransport이므로 새로운 API의 경우 처음부터 TFramedTransport을 추가하는 것이 좋습니다.

+0

고맙습니다. 나는 PHP extention thrift_protocol로 TBinaryProtocolAccelerated를 사용하는 것이 가장 좋은 방법이라는 것을 알았다. –