分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
作者:Volcano
来源:http://www.ooso.net/archives/537
这些天用php写了个thrift的socket server,因为原来thrift的源码里php部分只有基于apache的服务器端代码,再加上前些日子看到php也能直接使用libevent构建web服务器,所以才会想到写这个玩玩。
php-thrift-server源码
代码直接从apache的thrift项目clone过来,托管在github上:
http://github.com/volca/thrift
新增或改动的代码如下:
lib/php/`-- src |-- server | |-- TNonblockingServer.php | `-- TServer.php `-- transport |-- TNonblockingServerSocket.php |-- TNonblockingSocket.php |-- TServerSocket.php |-- TServerTransport.phptest/php|-- TestClient.php|-- TestNonblockingServer.php
使用示例
获取thrift的源码,并编译出thrift工具,编译过程请搜索
git clone git://github.com/volca/thrift.git
安装php,以及apc, libevent扩展:
pecl install apc
#需要先libevent-devel之类的包包
pecl install libevent
运行php的socket服务器,我直接从thrift的test代码中修改了一个独立运行的php server,见thrift/test/php/TestNonblockingServer.php,这里也包含一个测试业务代码的实现。
cd thrift/test/php
#用thrift命令行工具生成php的测试类库
make
#启动thrift服务,会监听本机的9090端口
php TestNonblockingServer.php
客户端的代码也一并提供,对各种数据类型比如int, float, string, list等等进行测试。
php TestClient.php
性能测试
apache + php的测试结果
testVoid() = void
testString("Test") = "Test"
testByte(1) = 1
testI32(-1) = -1
testI64(-34359738368) = -34359738368
testDouble(-852.234234234) = -852.234234234
testStruct({
"Zero", 1, -3, <