python服务端 和 php客户端通信一

原创 2012年03月27日 11:27:07

1 通过thrift

但是数据量太大thrift不支持

下载thrift包安装,比如我的是/usr/local/thrift-0.8.0

/usr/local/thrift-0.8.0/lib类库

/usr/local/thrift-0.8.0/test是你需要的教程 可以通过教材方便使用thrift


通信thrift文件

helloworld .thrift

你要写什么格式可以参照  test里面

service HelloWorld{
     string sayHello(1:string content, 2:string xpath)
 }
                                                                              

thrift -gen python xxx.py

thrift -gen php xxx.py

python服务端 。

test.py

import sys
  2 sys.path.append('/var/www/thrift/gen-py')
  3 from helloworld import HelloWorld
  4 from helloworld.ttypes import *
  5 from thrift.transport import TSocket
  6 from thrift.transport import TTransport
  7 from thrift.protocol import TBinaryProtocol
  8 from thrift.server import TServer
  9 import socket
 10 from lxml.html.soupparser import fromstring
 11 
 12 class HelloWorldHandler:
 13     def __init__(self):
 14         self.log = {}
 15 
 16     #def sayHello(self, content, xpath):
 17         #content = """<html><head><title>why len(y) ==< 1</title><script>var y = 1</script></head>sample.<html>"""
 18     def sayHello(self, content, xpath):
 19         root = fromstring(content)
 20         find_text = root.xpath(xpath)
 21         return find_text[0].text
 22 
 23 handler = HelloWorldHandler()
 24 processor = HelloWorld.Processor(handler)
 25 transport = TSocket.TServerSocket('127.0.0.1', 393939)
 26 tfactory = TTransport.TBufferedTransportFactory()
 27 pfactory = TBinaryProtocol.TBinaryProtocolFactory()
 28 server = TServer.TSimpleServer(processor, transport, tfactory, pfactory)
 29 print 'start server'
 30 server.serve()

test.php

 <?PHP
  2 $GLOBALS['THRIFT_ROOT'] = dirname(__FILE__).'/Thrift';
  3 require_once $GLOBALS['THRIFT_ROOT'].'/Thrift.php';
  4 require_once $GLOBALS['THRIFT_ROOT'].'/protocol/TBinaryProtocol.php';
  5 require_once $GLOBALS['THRIFT_ROOT'].'/transport/TSocket.php';
  6 require_once $GLOBALS['THRIFT_ROOT'].'/transport/THttpClient.php';
  7 require_once $GLOBALS['THRIFT_ROOT'].'/transport/TBufferedTransport.php';
  8 
  9 // Your gen-php dir
 10 $GEN_DIR = dirname(__FILE__).'/gen-php';
 11 require_once $GEN_DIR . '/helloworld/HelloWorld.php';
 12 require_once $GEN_DIR . '/helloworld/helloworld_types.php';
 13 
 14 // Set server host and port
 15 $host = "127.0.0.1";
 16 $port = 393939;
 17 
 18 try {
 19 
 20     //Thrift connection handling
 21     $socket = new TSocket( $host , $port, true );
 22     $transport = new TBufferedTransport($socket, 1024, 1024);
 23     $protocol = new TBinaryProtocol($transport);
 24     #echo "<pre>";
 25     #print_r($socket);
 26     #print_r($transport);
 27     #print_r($protocol);
 28     // get our example client
 29     $client = new HelloWorldClient($protocol);
 30     $transport->open();
 31 
 32     #$in = new ThriftTest_Page();
 33     // Get current timestamp from server
 34     $content = file_get_contents("http://www.baidu.com/");
 35     $content = mb_convert_encoding($content, "UTF-8");
 36 //  $content = "<html><head><title>why len(y) ==< 1</title><script>var y = 1</script></head>sample.<html>";
 37 //  die;
 38     $xpath = "//title";
 39     #$in->content = $content;
 40     #$in->xpath = $xpath;
 41 
 42     $return = $client->sayHello($content, $xpath);
 43 //  $return = $client->sayHello($content, $xpath);
 44     echo $return;
 45 
 46     $transport->close(); } catch (TException $tx) {
 49     print 'Something went wrong: '.$tx->getMessage()."\n";
 50 }
 51 ?>


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

php之与python进行socket通信

## 设计目的 通过前端页面发起请求交给php,php创建socket请求交给python脚本,然后执行完毕之后,返回给前端。 ## index.html test g_xm...
  • sauphy
  • sauphy
  • 2015年12月16日 00:50
  • 482

webService(php)的soap与nusoap服务端与客户端的通信

PHP SOAP服务器 用PHP和Soap来建立SOAP服务器非常容易。基本上,你只要写出你想要暴露给你的Web service的函数,然后用Soap去注册它们就可以了。另外还需要两步才能完成PHP...
  • mapguru
  • mapguru
  • 2015年09月04日 09:54
  • 598

【socket】用PHP的socket实现客户端到服务端的通信

一、client.php客户端:

php服务端与android客户端socket通信

from:http://swerit.iteye.com/blog/1291829 php服务端的代码要在类似apache的服务器中运行,代码如下:  Php代码   ...

php服务端与android客户端socket通信

php写的服务端和java写的android客户端通过socket通信 php服务端的代码要在类似apache的服务器中运行,代码如下: Php代码        ...

Delphi服务端和PHP客户端通过Socket通信

Delphi,PHP,Socket,通信

Android与PHP交互:客户端用HTTP协议与服务端通信

为了实现Android客户端和服务端的通信,Android SDK为我们提供了Apache的HttpClient来方便我们使用各种HTTP服务。可以把HttpClient看成一个浏览器,通过它可以方便...

php服务端与android客户端socket通信

转自:http://swerit.iteye.com/blog/1291829 php服务端的代码要在类似apache的服务器中运行,代码如下:  Php代码    ...

用C++ ulxmlrpcpp 做服务端,PHP xmlrpc 做客户端,实现前后xml通信

前一阵,想在fedora下用C++服务程序,PHP前台程序,实现一个系统。选择封装完整HTTP协议通信,且实现多线程的程序库:ulxmlrpcpp。但是这个库只封装c++的客户端和服务端,所以决定在客...

Android客户端与PHP服务端通信(四)---极光推送示例工程分析

概述     上一节,描述了注册极光推送并使用其例子的方法,这一节准备研究一下示例工程的框架,为移植它做准备。 分析例程源码     首先分析一下例程的源码结构,建议对照着JPUSH的官方文档(htt...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python服务端 和 php客户端通信一
举报原因:
原因补充:

(最多只允许输入30个字)