【求助】编写一个使用CGI技术的代理服务器的困惑。

乌龟壳 发布于 2011/01/16 01:24
阅读 645
收藏 1

大大们好。

小生近来一时兴起,想开发一个CGI程序。环境是一个局域网,局域网内部只有一台计算机可以连接到互联网(服务器),其他的都不行(为了防止打网络游戏等),但是局域网内的这些计算机互相之间都能访问。

于是就想到了开发一个网站,使用CGI程序来进行中转,最后可以提供一个WEB界面来变相地上网。要求也不是很高,就是网页的基本数据(图片/CSS文件/JS文件/html文件/xml文件)都能正常被那些不能上网的计算机获取到,以及能通过普通的http协议下载文件。

刚开始,我是使用perl来编写Apache的CGI脚本,但是因为测试发现,用perl写的CGI启动的时候很占用CPU性能,甚至超过了50%,感觉非常不适合多人用,于是就暂时放弃了。然后就是使用perl编写nginx的fast-cgi程序,但是又发现fastcgi程序下载文件的这一步占用的时间比较多,将下载的任务通过线程交出去后,Accept()一执行就把之前的fastcgi请求断掉了,而windows下的Async::FastCGI模块不知道为何无法编译成功。后来尝试了一下mod_perl,用sleep 10;测试好像和fastcgi一样是单线程的。最后为了启动速度又为了能多线程,只好拿起了C++和QT开始写CGI……

简单来说,其实这个CGI就四个步骤:获取请求信息>下载文件>如果是html/css/js则分析链接并转化>输出转化后的结果。

对于编程方面,我虽然不是刚刚入门的新手,但很多东西都不懂,希望看完这个帖子的大大能指点下我,上面所描述的那些有没有欠缺考虑的地方?还有就是对于这个问题有没有更好的办法?

加载中
0
韭精过敏
韭精过敏

super proxy 或者 ccproxy 都很好

0
乌龟壳
乌龟壳

一年过去一大半了,看看这个年初刚入职时发的帖子,自己确实进步了一点。

现在这个程序已经实现了,是使用Python以及其Gevent库实现的,修改了里面的一个example,好像是webproxy.py。

并发下载的问题也没问题了,多人访问也没问题了,性能还很好。

返回顶部
顶部