炎术士挂机:用Bash 开发Web2.0

来源:百度文库 编辑:中财网 时间:2024/05/04 04:12:13
用Bash 开发Web2.02009-09-15 21:44非主流一把~~~ 用Bash 开发Web2.0

一般比较喜欢用C语言或者perl 语言来开发CGI程序, 今天非主流一把, 用Bash写CGI.. 但是php cgi 的性能远远低于mod_php, perl cgi的速度也低于 mod_perl , CGI慢慢远离了人们的视野,程序员们用Fastcgi/mod_perl/mod_php 取代了效率很低的CGI(一个连接就是一个进程). CGI也存在很多的安全问题, 编程的时候一定要小心用户的输入过滤,和ENV PATH的限制,很容易被黑客获取web server的权限.

Bash 于 perl CGI 编程对比:
HTTP Head 结尾: 没有区别, 在Head中: Content-type: text/html\n\n
HTTP Cookie: 没有区别, 在Head中: Set-Cookie : name=value\n
HTTP GET :     理论上都一样,保存在head中
bash: $QUERY_STRING
Perl:     $ENV{'QUERY_STRING'}
HTTP POST:   理论是一样的,POST内容放在STDIN中
bash :   str=`cat`
perl :   read(STDIN,$POST,$ENV{'CONTENT_LENGTH'})

GET/POST: 需要写urlencode/urldecode方法,很简单 就是ASCII转为16进制 在加上'%'符号就可以了
Session:
perl:   需要自己实现,或者使用use CGI::Session
bash: 需要自己实现, 原理很简单,可以使用http1.1中对Session的实现的描述:
每一连接生成一个随机ID, 保持这个ID在一段时间之内有效,将这个ID存储在Cookies中(如果客户端不支持Cookies,则使用url重定向技术), 然后这个ID就好像一把钥匙,每一个ID在服务器上对应一个'柜子' 来存储Session,我们可以用简单的文件系统来实现.然后用户每次访问的时候携带自己的SessionID, 在服务器上和自己对应的‘柜子’中获得Session.

好了,我们已经掌握 HTTP 的head,get,post,cookie,session 的实现方法了, 可以用Bash开发Web应用了~甚至一可以用Bash写强大Web2.0程序, 但是效率很低的~~~

一个测试程序(先在apache中配置好cgi环境)
web.sh
========================================

#!/bin/bash


printf "Content-type: text/html\n"
printf "Set-Cookie:name=wangyong\n\n"


printf "Helloworld
\n"

printf "GET : $QUERY_STRING\n"
printf "
"
printf "POST: `cat`
"


echo ""



echo ""
printf "
"
printf "ENV: `env`"



我的Web应用程序道路~返朴归真了: J2EE-->PHP-->PERL CGI-->C CGI-->Bash CGI--> ???