0

我已经在我的本地系统上设置了 Thrift - windows 7、PHP 5.3.8、Apache 2.2.21、Thrift 0.80、APC。我试图运行从 Thrift 编译器生成的客户端/服务器节俭程序,但是这些程序都不起作用。每个都给我一个错误'TSocket:无法从“localhost / path_to_client port 80”读取4个字节'。

我已经为 PHP 启用了 Socket 扩展并尝试使用 THttpClient 和 TSocket 类,但这些都不起作用。我已将协议类从 TBinaryProtocol 切换到 TBinaryProtocolAccelerated,但没有任何结果。

我已经浏览了 Thrift 的核心类,我看到“_handle”实际上并不指向文件,而是指向“localhost”。我试过给它一个文件路径,但它仍然不起作用。

我在 Socket 编程方面没有太多经验,但是我觉得我做的大部分事情都是正确的。

您对此的帮助将不胜感激。

4

1 回答 1

2

我能够解决此问题,方法如下-:

  1. 首先,从 Thrift 编译器生成 PHP 代码的语法是 thrift --gen php* :server * yourfile.thrift 。我在代码中缺少:server。Thrift 文档中没有提到这一点

  2. 将 Thrift 编译器生成的 PHP 文件包含在您的客户端和服务器文件中。

  3. 您的服务器文件应该实现 Thrift 接口。

  4. 确保首先执行服务器文件来启动 Thrift 服务器。创建您的classProcessor 文件的对象并打开传输层。你会在 thrift php 教程中找到这个。

  5. 如示例中所示,从您的客户端文件调用服务器函数。

注意 - 确保您充分了解 Thrift 中的函数返回类型。

问候库纳尔

于 2012-07-11T14:14:31.913 回答