大大们好。 小生近来一时兴起,想开发一个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则分析链接并转化>输出转化后的结果。 对于编程方面,我虽然不是刚刚入门的新手,但很多东西都不懂,希望看完这个帖子的大大能指点下我,上面所描述的那些有没有欠缺考虑的地方?还有就是对于这个问题有没有更好的办法?
super proxy 或者 ccproxy 都很好######一年过去一大半了,看看这个年初刚入职时发的帖子,自己确实进步了一点。 现在这个程序已经实现了,是使用Python以及其Gevent库实现的,修改了里面的一个example,好像是webproxy.py。 并发下载的问题也没问题了,多人访问也没问题了,性能还很好。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。