欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

php与其他语言的交互(80),该如何解决

程序员文章站 2022-05-13 14:39:09
...
php与其他语言的交互(80)
假如我现在有一个web服务器 S1
还有一个 应用服务器 S2(比如做搜索功能)

S1y用php写的, S2的应用是用c(或者java,c++)写的,
怎么样实现这两台服务器之间的交互

流程我是这样想的,
1.用户访问S1
2.服务器将运算交给S2
3.S2将运算结果返回S1
4.S1返回信息给用户


------解决方案--------------------
soap
------解决方案--------------------
json不可以吗
------解决方案--------------------
任何网络上服务器间的数据通讯方案都可以使用
soap/xmlrpc/REST/json(p)/ 这些都是比较方便的成熟的

如果你对这两个服务器都有足够控制权限,
当然也可以自己通过socket直接通讯(可以用非80端口)

如果这两个服务器都可以操作某个公共媒介,比如同一个数据库,或网络文件系统,
当然也可以通过这个媒介传递数据。。。

。。。。


------解决方案--------------------
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。
------解决方案--------------------
可以尝试用这个
http://developer.51cto.com/art/201002/182757.htm
当然略有差异。目标是一样的
------解决方案--------------------
写接口吧
------解决方案--------------------
最简单的方法应该是使用php的file_get_contents('http://ip:port'),可以通过GET或者POST方式传值,而函数的返回值就是S2的处理结果,关键是S2要如何创建一个基于http协议的监听程序。

使用libevent可以非常方便,快捷的建立一个http服务,一个简单的代码如下:
C/C++ code
#include   #include  #include  #include   #include  #include    void generic_request_handler(struct evhttp_request *req, void *arg) {     struct evbuffer *returnbuffer = evbuffer_new();      evbuffer_add_printf(returnbuffer, "Thanks for the request!");     evhttp_send_reply(req, HTTP_OK, "Client", returnbuffer);     evbuffer_free(returnbuffer);     return; }  int main(int argc, char **argv) {     short http_port = 8084;     char *http_addr = "0.0.0.0";     struct evhttp *http_server = NULL;      event_init();     http_server = evhttp_start(http_addr, http_port);     evhttp_set_gencb(http_server, generic_request_handler, NULL);      fprintf(stderr, "Server started on port %d\n", http_port);     event_dispatch();      return(0); }
php与其他语言的交互(80),该如何解决

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

相关文章

相关视频