本文理解了一下thrift的教程php版本最终没有成功运行,python版本成功运行。
从头理解一遍thrift工作原理
cd /root/thrift-0.13.0/tutorial
第一篇:理解php的thrift工作原理
thrift -r --gen php tutorial.thrift |
启动Server
php PhpServer.php Fatal error: Class 'tutorial\CalculatorProcessor' not found in /root/thrift-0.13.0/tutorial/php/PhpServer.php on line 123 |
thrift -r --gen php:server tutorial.thrift |
php PhpServer.php 不报错了
php PhpClient.php 报错如下
thrift TException: TSocket: Could not connect to localhost:9090 (No route to host [113])
将runServer.py 改改。
BaseHTTPServer.HTTPServer(('', 8080), Handler).serve_forever()
php PhpClient.php 报错如下
TException: TSocket: timed out reading 4 bytes from localhost:9090
$socket = new TSocket('localhost', 9090); $socket->setRecvTimeout(10000); |
2020.02.03 18:05 都不好用,让人烦躁,鼓捣一下午不好用
18:06
第二篇:理解python版本的thrift的工作模式
试试python版本
thrift-r --gen py tutorial.thrift
/root/thrift-0.13.0/tutorial/gen-py/tutorial
[root@iz2ze9n3z2fl9zj9hrv58vz py]# ./PythonClient.py ImportError: No module named six easy_install six [root@iz2ze9n3z2fl9zj9hrv58vz py]# ./PythonServer.py Starting the server... |
好了,启动正常了。
[root@iz2ze9n3z2fl9zj9hrv58vz py]# ./PythonClient.py ping() 1+1=2 InvalidOperation: InvalidOperation(whatOp=4, why=u'Cannot divide by 0') 15-10=5 Check log: 5 |
执行PythonClient.py 自动出结果了。Server那边的反应如下
[root@iz2ze9n3z2fl9zj9hrv58vz py]# ./PythonServer.py Starting the server... ping() add(1,1) calculate(1, Work(comment=None, num1=1, num2=0, op=4)) calculate(1, Work(comment=None, num1=15, num2=10, op=2)) getStruct(1) |
看来php也应该出来这些玩意,不出来就是也有错误。