Проблемы с реализацией PHP Thrift сервера - PullRequest
1 голос
/ 22 февраля 2012

В настоящее время я пытаюсь создать сервер PHP Thrift, к которому будет обращаться клиент PHP для добавления двух целых чисел. Просто базовая реализация, чтобы получить основы работы клиент / сервер Thrift, но я не совсем понимаю, как настроить PHP-сервер. Это делается на локальном хосте Amazon EC2. Извините названия вещей - у меня закончились варианты слова test.

Это базовый Трейл IDL - http://pastebin.com/3KGGrDUN

namespace php gaybear

service addTest {
void ping(),
i32 add(1:i32 num1, 2:i32 num2),
}

В настоящее время это код для серверной части - http://pastebin.com/CWnernxf

<?
$GLOBALS['THRIFT_ROOT'] = '/usr/lib/php';

require_once $GLOBALS['THRIFT_ROOT'].'/Thrift.php';
require_once $GLOBALS['THRIFT_ROOT'].'/protocol/TBinaryProtocol.php';
require_once $GLOBALS['THRIFT_ROOT'].'/transport/TPhpStream.php';
require_once $GLOBALS['THRIFT_ROOT'].'/transport/TBufferedTransport.php';

$GEN_DIR = '/usr/lib/php/gen-php/gaybear/';

require_once $GEN_DIR.'/addTest.php';
require_once $GEN_DIR.'/gaybear_types.php';

class addHandler {

        public function ping() {
        }

        public function add($num1, $num2) {
                return $num1 + $num2;
        }

        public function zip() {
        }
}

$handler = new addHandler();
$processor = new addTest($handler);

$transport = new TBufferedTransport(new TPhpStream(TPhpStream::MODE_R | TPhpStream::MODE_W));
$protocol = new TBinaryProtocol($transport, true, true);

$transport->open();
$processor->process($protocol, $protocol);
$transport->close();

?>

Я не уверен, как вы настроитесь на стороне сервера. Для других языков это выглядит так же просто, как определить сокет, но из прочтения многих руководств PHP, похоже, использует «TPhpStream».

Есть ли кто-нибудь, кто мог бы пролить свет на создание Thrift PHP-сервера и заставить PHP-клиента вызывать из него базовые процедуры? Я не нашел учебника, который бы достаточно подробно объяснял создание PHP-сервера Thrift, чтобы я мог его понять.

Спасибо.

1 Ответ

0 голосов
/ 22 февраля 2012

Не на английском, но много примеров кода, и вы можете попробовать использовать Google переводчик.

http://www.easy -coding.de / вики / PHP / бережливость-PHP-server.html

...