关闭

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

2541人阅读 评论(2) 收藏 举报

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 ?>


0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

python 和 php 通信3

gearman python easy_install .****.zip 即可安装python-gearman 用gearman 通信最重要的是  发送数据的时候要用json包装一下然后再发送 ...
  • cabing2005
  • cabing2005
  • 2012-03-27 11:33
  • 1529

php之与python进行socket通信

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

Python网络编程之socket编程(一)--使用TCP和UDP客户端和服务器通信

本文用python进行socket编程,实现客户端和服务器互相发送字符串,并在标准输出打印。 下面是客户端程序: #!/usr/bin/python import socket HOST = 'lo...
  • FreeeLinux
  • FreeeLinux
  • 2016-07-30 09:43
  • 2038

Python服务器与多种客户端(Python/Java/Android)之间的通信

我们不会一直满足于客户端程序的开发,因为太过受限了。为了打破这样的受限,你需要做的就是去编写服务器端代码。以及如何在服务器与客户端之间的通信。以下将对此以Python为服务器,并分别以Python、J...
  • u013761665
  • u013761665
  • 2015-04-15 10:24
  • 5598

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

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

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

一、client.php客户端:
  • yanhui_wei
  • yanhui_wei
  • 2014-08-20 14:34
  • 33717

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

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

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

转自:http://swerit.iteye.com/blog/1291829 php服务端的代码要在类似apache的服务器中运行,代码如下:  Php代码    ...
  • lipeiran1987
  • lipeiran1987
  • 2017-02-09 08:19
  • 951

使用RSA对C++ 客户端和 PHP 服务端之间通信的数据进行加密

一、PHP服务端加密方案选择 php服务端很简单,基本上只有 openssl一种方案选择,而且使用起来也很方便,PHP自带了openssl库,只要在php.ini里把 ;extension=php...
  • demoscene
  • demoscene
  • 2017-07-13 21:00
  • 478

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

前一阵,想在fedora下用C++服务程序,PHP前台程序,实现一个系统。选择封装完整HTTP协议通信,且实现多线程的程序库:ulxmlrpcpp。但是这个库只封装c++的客户端和服务端,所以决定在客...
  • liuzhengjian123
  • liuzhengjian123
  • 2012-08-13 20:47
  • 4059
    个人资料
    • 访问:164356次
    • 积分:3831
    • 等级:
    • 排名:第9648名
    • 原创:223篇
    • 转载:24篇
    • 译文:0篇
    • 评论:10条
    博客专栏