本文理解了一下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也应该出来这些玩意,不出来就是也有错误。