我在本地系统上设置了Thrift - Windows 7,PHP 5.3.8,Apache 2.2.21,Thrift 0.80,APC。 我试图运行从Thrift编译器生成的客户端/服务器thrift程序,但没有一个程序工作。每一个都给我一个错误'TSocket:无法从“localhost / path_to_client端口80”'读取4个字节。
我已经为PHP启用了Socket扩展,并尝试使用THttpClient和TSocket类,但这些都不起作用。 我已将协议类从TBinaryProtocol切换到TBinaryProtocolAccelerated,但没有结果。
我已经浏览了Thrift的核心类,我发现'_handle'实际上并不指向文件,而是指向'localhost'。我试过给它一个文件路径,但它仍然无法正常工作。
我在Socket编程方面没有太多经验,但我觉得我正在做大部分事情。
我们将非常感谢您的帮助。
答案 0 :(得分:1)
我能够解决这个问题,这是如何 - :
首先,从Thrift编译器生成PHP代码的语法是thrift -gen php * :server * yourfile.thrift。我从代码中遗漏了:server 。这在Thrift文档中没有提到
在客户端和服务器文件中包含Thrift编译器生成的PHP文件。
您的服务器文件应该实现Thrift接口。
确保首先执行服务器文件来启动Thrift服务器。创建yourclassProcessor文件的对象并打开传输层。你会在thrift php教程中找到这个。
从客户端文件中调用服务器函数,如示例中所示。
注意 - 确保在Thrift中充分了解函数返回类型。
此致 KUNAL