В настоящее время я пытаюсь создать сервер 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, чтобы я мог его понять.
Спасибо.