假如我现在有一个web服务器 S1
还有一个 应用服务器 S2(比如做搜索功能)S1y用php写的, S2的应用是用c(或者java,c++)写的,
怎么样实现这两台服务器之间的交互流程我是这样想的,
1.用户访问S1
2.服务器将运算交给S2
3.S2将运算结果返回S1
4.S1返回信息给用户
还有一个 应用服务器 S2(比如做搜索功能)S1y用php写的, S2的应用是用c(或者java,c++)写的,
怎么样实现这两台服务器之间的交互流程我是这样想的,
1.用户访问S1
2.服务器将运算交给S2
3.S2将运算结果返回S1
4.S1返回信息给用户
?? 啥意思 soap 是android 专用?? 好好学学再说
c生成xml数据文件 php 解析就行了
这只是一种实现方案。
这个我没说soap是android专用,只是我暂时是用过这一个方面。我不清楚他的其他用法。。sphinx 是全文搜索引擎?我只是举例子运算服务器可能是做搜索的运算,也可以是其他的运算再有就是我想知道的重点:应该怎么样使两个服务器交互
soap/xmlrpc/REST/json(p)/ 这些都是比较方便的成熟的如果你对这两个服务器都有足够控制权限,
当然也可以自己通过socket直接通讯(可以用非80端口)如果这两个服务器都可以操作某个公共媒介,比如同一个数据库,或网络文件系统,
当然也可以通过这个媒介传递数据。
————————————————————————————————
基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
方便的管理数据的收发,解析的部分才需要关心soap,json等数据格式,这个可以先放在后面一点讨论
那么有没有这样一个模型在php 和 c语言之间存在呢?
http://developer.51cto.com/art/201002/182757.htm
当然略有差异。目标是一样的
当然这篇文章里面提到的hiphop是个好东西,有机会要好好学习学习
http://www.cs.fsu.edu/~engelen/soap.html
你试试,
或者上C论坛问问,肯定更多选择
OMG, 你喜欢看西班牙文的?
不好意思,没用过,只是google出来的,我离开 C 已经很久很久很久很久.....了
我已经弄过好多了.
A服务器用file_get_contents访问B的接口。
#include < stdio.h>
#include < stdlib.h>
#include < unistd.h>
#include < event.h>
#include < evhttp.h>
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);
}
他实现了对端口8084的监听,然会返回一个Thanks for the request!作为应答,当然你可以在回调函数里做任何你想做的事,该程序可以在php端通过调用file_get_contents('http://ip地址:8084')进行交互。在大中型网站除了编写php扩展,这种方式是应用最为广泛的,下面地址可以做参考(sina的云计算托管平台)
http://phpex.sinaapp.com/detail.php?id=21