实现PHP Thrift服务器的问题

时间:2012-02-22 19:13:37

标签: php sockets thrift

我目前正在尝试创建一个PHP Thrift服务器,PHP客户端将访问该服务器以执行两个整数的添加。只是一个基本的实现,以获得Thrift客户端/服务器的基础工作,但我不完全清楚如何设置PHP服务器端的东西。这是在Amazon EC2 localhost上完成的。请原谅事情的名字 - 我用完了测试这个词的变化。

这是基本的Thrift 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客户端从中调用基本过程有所启发?我还没有找到一个教程,它已经解释了Thrift PHP服务器的创建,这足以让我理解。

感谢。

1 个答案:

答案 0 :(得分:0)

不是英文版,但代码示例很多,您可以尝试使用Google翻译。

http://www.easy-coding.de/wiki/php/thrift-php-server.html