【发布时间】:2012-03-13 04:06:44
【问题描述】:
我目前正在尝试创建一个 PHP Thrift 服务器,PHP 客户端将访问该服务器以执行两个整数的加法。只是一个基本实现,可以让 Thrift 客户端/服务器工作的基础知识,但我并不完全清楚如何设置 PHP 服务器端。这是在 Amazon EC2 localhost 上完成的。请原谅事物的名称 - 我用完了单词 test 的变体。
这是基本的 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 服务器创建的教程。
谢谢。
【问题讨论】:
-
您是否收到任何错误消息或什么不起作用?
-
你也可以看看这个问题:stackoverflow.com/questions/8871858/…