前言:Thrift是Facebook下开源RPC(远程过程调用,Remote Procedure Call)框架,常用于跨计算机、跨语言之间的程序接口调用。
生成gen-php文件步骤:
1.下载thrift.exe文件,放到任意目录
下载地址:http://apache.fayea.com/thrift/0.10.0/
文件放到目录:D:/thrift/
通过查看版本检查是否有问题:
thrift-0.1.exe -version
2.配置环境变量
计算机右键->属性->高级->环境变量->打开PATH,在最后添加D:\thrift;
3.把编写好的test.thrift文件和下载的thrift-0.1.exe放在一起,执行下方命令生成gen-php文件
thrift-0.1.exe -gen php test.thrift
此时目录里面已经生成好了gen-php文件了,和Thrift包放在一起,新建一个入口文件就可以调用啦
入口文件index.php代码:
<?php
error_reporting(E_ALL);
require_once __DIR__ . '/Thrift/ClassLoader/ThriftClassLoader.php';
require_once __DIR__ . '/gen-php/CoreQueryService.php';
require_once __DIR__ . '/gen-php/Types.php';
use Thrift\ClassLoader\ThriftClassLoader;
use Thrift\Protocol\TBinaryProtocol;
use Thrift\Transport\TSocket;
use Thrift\Transport\TBufferedTransport;
if(isset($_GET['data'])){
// Load
$loader = new ThriftClassLoader();
$loader->registerNamespace('Thrift', __DIR__ . '/');
$loader->registerDefinition('Hyy1', __DIR__ . '/gen-php');
$loader->register();
// Init
$socket = new TSocket('101.200.125.111', 9090);
$socket->setSendTimeout(30 * 1000);
$socket->setRecvTimeout(30 * 1000);
$transport = new TBufferedTransport($socket, 1024, 1024);
$protocol = new TBinaryProtocol($transport);
$client = new CoreQueryServiceClient($protocol);
// Config
// Connect
$transport->open();
$socket->setDebug(TRUE);
// Create request
$request = new CoreQueryRequest();
$request->qid = '3';
$key_words = trim($_GET['data']);
//$code = mb_detect_encoding($key_words,array('UTF-8','GBK'));//
//iconv('GBK','UTF-8//IGNORE',$key_words);//gbk utf-8
$request->data = $key_words;
// Call...
$response = $client->GetCoreWords($request);
// Print response...
$result = $response->word_list;
$count = count($result);
echo "搜索:".$_GET['data']."<br /><br />";
for($i=0;$i<$count;$i++){
echo '核心词:'.$result[$i]."<br />";
echo "<br />";
}
// Close
$transport->close();
}
?>
<html>
<head>
<title></title>
</head>
<body>
<form action="index.php" method="get">
<input name="data" placeholder="请输入关键字" />
<input type="submit" name="sub" value="search" />
</form>
</body>
</html>