服务器端编程问题求助

2012-04-25 07:07:03 +08:00
 myrual
我同事用C语言写了一个服务器端的TCP socket程序,用来截取一个嵌入式设备上发的http GET请求(http:host/asp.net?xxx=yyy&xxx=yyy),然后把参数拿到之后转发给本地的apache服务,然后用php来处理。 之所以这么做是因为他只会php,所以只能想到这个方案。
他的c语言程序很简单, 监听本地端口,有连接进入就开一个线程进行参数截取操作,拿到参数转发本地之后就关闭socket,然后退出线程。整个程序没有用到select。
现在遇到了两个问题:
1. 如果用户多了,会发现服务器端有大量的处于 CLOSE_WAIT的连接。
2. 用户多了以后,这个c语言写的TCP socket程序会占用大量的cpu时间。

针对问题2:
apache能处理类似 asp.net的http get请求么?
如果使用python twisted来处理http get,会比现在的情况好么?
web.py是不是更加合适?
2974 次点击
所在节点    问与答
8 条回复
ratazzi
2012-04-25 07:26:54 +08:00
直接 iptables 就可以转发了,干嘛要自己写,内核处理效率多高啊,如果可以的话
bearice
2012-04-25 08:32:51 +08:00
1。CLOSE_WAIT是由于服务端主动关闭链接导致的,这是不可避免的。
2。不明白你说的http get是什么样的请求。普通的HTTP请求的话不是直接用apache更加方便?
myrual
2012-04-25 08:43:21 +08:00
@bearice 谢谢。
http get 的请求是这样的 GET http://xxx.com/abc.asp?arg1=val1&ar2=val2
我的同事不懂如何用apache来处理这样的请求,我也不懂
HowardMei
2012-04-25 09:28:40 +08:00
mongrel2 ? 有个 www.photon-project.com/ 在做php+m2这件事情, 不知道有谁用于生产环境,所以要仔细权衡。

话说还是python和nodejs在这方面优势比较大。
HowardMei
2012-04-25 09:34:32 +08:00
我一直关注能一体支持web和非web任务并发处理的系统,感觉mongrel2是很有前途的,准备挖下一个坑就用它试试看。
9hills
2012-04-25 09:43:45 +08:00
@myrual 用PHP+Apache很容易就能获得HTTP GET参数,和Apache无关,Apache就是个server,主要是PHP来处理。

记得是 $_GET['arg1'] 之类的,PHP不熟。。
binux
2012-04-25 10:09:35 +08:00
@myrual 你是指地址是abc.asp而不是abc.php? rewrite就好了啊
bearice
2012-04-25 17:14:39 +08:00
@myrual
用Apache吧所有请求都rewrite到一个php上就好了,例如:
<VirtualHost *:80>
ServerName test
DocumentRoot /path/to/your/script/dir
RewriteEngine on
RewriteRule ^(.*)$ /some.php [L]
</VirtualHost>

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/33459

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX