电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 在线教程-> CGI
实战 FastCGI(转)一-CGI教程,CGI文档
作者:网友供稿 点击:38
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 
实战 fastcgi
作 者: 许明彦
abstract:
当网站日益走红,联机人数直线上升而心中暗自窃喜之时,突然客服中心涌来大批反应电话:『网站连不上去』、『按下去等好久画面才出来』、『一直出现 server too busy...』...。看来又要把硬件升级了,但是再加更多的内存,更多 cpu、换更贵的机器真的能解决问题吗?有没有比较省钱的方法呢?本文将介绍如何在阿帕契服务器上安装 fastcgi 的模块,如何设定及使用 fastcgi 网站应用程序,让你的网站程序在现有的架构上以全速执行。
----------------------------------------------------------------------------

1. 克服 cgi 的瓶颈
1.1 令人头痛的效率问题
1.2 一些解决之道
1.3 更好的方法 - fastcgi
2. 安装 fastcgi
2.1 在阿帕契服务器上安装 fastcgi 模块
2.1.1 标准安装 (利用 apaci)
2.1.2 将 mod_fastcgi 安装成一个 dso
2.2 加入使用 mod_fastcgi 的相关设定
2.3 安装 fastcgi 开发套件
2.4 测试 fastcgi
2.5 安装 fcgi 模块 for perl
3. 撰写 fastcgi 应用程序
3.1 程序架构
3.2 引入 fcgi_stdio.h 标头档
3.3 fastcgi 处理循环
3.4 炼结 libfcgi.a 函式库
3.5 撰写 fastcgi 程序的注意事项
4. fastcgi 有多快?
4.1 评比工具 - apachebench
4.2 cgi vs. fastcgi
4.3 找出 memory leak
5. 参考
about this document ...

----------------------------------------------------------------------------

1. 克服 cgi 的瓶颈

1.1 令人头痛的效率问题
拜 cgi 之赐,网站不再只有固定不变的图形和文字,藉由程序动态产生的网页可以让网站好象『活』了起来。小从简单的网页计数器,留言版,大至处理众多资料的搜寻引擎,可做线上实时交易的电子商务、网络下单等。cgi 简单、开放、跨平台、与程序语言独立的特性,使得撰写网站应用程序变得很容易。

但随着网站使用量日增,这些 cgi 程序从原本动态网页的功臣,突然成了网站效率的头号杀手。由于 cgi 先天的限制1,突然涌入大量的联机请求 (request) ,常会造成网站主机瞬间资源被占用,彷佛『当机』一样,或是处理速度变得很慢。

另一个常遇到的限制是和数据库联机的问题,如果 cgi 程序后端需要联机至数据库执行指令再取得结果,突然大量的联机请求可能会超过数据库系统容许联机的上限 (例如数据库系统使用者数目的限制)。

因此对一个主要以使用 cgi 程序制作动态网站的开发者而言,解决 cgi 执行效率瓶颈成了一个头痛的问题。以一个股市实时行情报价的网站为例,每天的联机请求将近八成集中在股市开盘的尖峰时段内,更是对网站应用程序极大的考验。

1.2 一些解决之道
现在已经有许多方案被提出来以解决 cgi 执行效率上的瓶颈,在『用 fastcgi 加速你的网站』一文中也有简单的说明,这里仅就笔者在开发股市实时报价的网站应用程序时,所尝试过的一些方法提出个人的经验和意见。以笔者的案例而言,原本的 cgi 程序是以 c 语言写的,并且用了其它的 c 函式库所以下列的方法主要是以提供 c 语言开发环境的方案为主。

nsapi
由于原先网站是在 unix 系统上,网站服务器使用网景 enterprise server,所以最早想到是用 nsapi 来改写网站应用程序。在网景的网站上有非常详细的 nsapi 使用手册,不幸的是没有中文手册。要用 nsapi 改写网站应用程序最麻烦的是你要把所有程序编译成动态函式库 (share library),以供 enterprise server 在 run-time 时期可以动态呼叫这些程序。由于利用 nsapi 所写的程序是直接从 web server 的执行空间内被呼叫,所以速度最快,但是程序必须遵循 enterprise server 的撰写规则,而且一旦程序发生错误, web server 也会受影响。

isapi
相较于 nsapi ,在 microsoft nt iis (internet information server) 平台就是 isapi 了。类似 nsapi ,利用 isapi 撰写网站应用程序,必须把应用程序编译成动态函式库,也就是 dll 檔。它的执行速度也很快,但要遵循 isapi 的撰写规则和数据结构,程序发生错误时也会影响 iis server 的正常运作。
综观以上两种以 web server api 为主的方案 (其实 apache 也有相对应的 server api,只是用的人可能更少) ,它们的执行速度都很快,就产生动态网页而言比 cgi 快上好几倍。但是就程序开发者的角度2来看,它们有一些缺点:

1. nsapi 及 isapi 与网站平台相依性太高 (platform dependency),也就是说使用了 nsapi 或 isapi 后,应用程序就完全受限于所使用的网站服务器平台,不能变换所使用的网站服务器。不像 cgi 完全不受网站平台的限制,可以在任何网站服务器 (netscape, microsoft iis, apache, ncsa)上执行。另外像 isapi 更只能限制在 windows nt 平台上使用。
2. nsapi 及 isapi 只提供 c 程序语言的界面,亦即开发者一定要使用 c 语言开发。不像 cgi 是与开发者所使用的程序语言完全无关,除了 c 之外,常用的还有 perl,tcl等。
3. netscape enterprise server 和 microsoft iis 都是以多执行绪 (multi-threads) 的方式处理 nsapi 及 isapi 的程序,所有执行绪共享同一块变量空间,因此在变量数据的处理上要特别小心,以确保每一个执行绪内的变量资料的安全,不会互相影响。
4. nsapi 和 isapi 应用程序都是直接在服务器的执行行程 (process) 内被呼叫,如果程序当掉了,整个网站服务器都会被影响。cgi 当掉服务器会响应 internal server error 的讯息,服务器本身不受影响。
5. nsapi 和 isapi 应用程序必须被服务器呼叫才会被执行,侦错 (debug) 相当不容易。

1.3 更好的方法 - fastcgi
如果你正饱受 cgi 效率不佳之苦,又不想受限于 nsapi 及 isapi ,也没有大笔银子去买昂贵的 application server,我建议你试试看 fastcgi。

不同于 nsapi 及 isapi 以及其它的网页服务器语言 (如 asp, php3, mod_perl),fastcgi 比较类似 cgi,它只是一个网站应用程序设计的规格,因此先天上不受任何网站服务器平台,操作系统平台,以及开发语言的限制,但又能大幅改善 cgi 效率不良的问题。fastcgi 的特色如下:

1. fastcgi 像是一个常驻 (long-live) 型的 cgi,它可以一直执行着,只要激活后,不会每次都要花费时间去 fork 一次 (这是 cgi 最为人诟病的 fork-and-execute 模式)。
2. fastcgi 可在任何平台上使用,netscape enterprise 及 iis 都有 fastcgi 的模块可供使用,阿帕契 (apache,以及利用 apache 衍生出做的服务器) 上也有 mod_fastcgi 可用。
3. fastcgi 支持 c/c++,perl,tcl,java,python 等程序语言。
4. fastcgi 的应用程序亦兼容于 cgi。即 fastcgi 的应用程序也可以当成 cgi 来执行。
5. 现有的 cgi 程序要改写成 fastcgi 非常简单,最少可能只需要多加入三行程序代码。
6. fastcgi 的侦错方式与 cgi 大同小异,只要带入程序所需的环境变量及参数,即可在命令列模式执行或侦错。
7. fastcgi 应用程序的写作方式与 cgi 类似,除了几项原则要特别注意外,fastcgi 的写作方式跟 cgi 几乎一样,与学习 web server api 比较起来, fastcgi 简单多了。
8. fastcgi 支授分布式运算 (distributed computing),即 fastcgi 程序可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求。

看到 fastcgi 这些特色后,是否跃跃欲试呢。下一章将介绍如何在 apache 服务器上安装 fastcgi 的步骤。
文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·LB5000XP论坛配合SERV-U获取系统管理员权限-CGI教程,CGI文档
·CGI 版本-PHP教程,其它文章
·获取随机的由大小写字母和数字组成的八位密码-CGI教程,CGI文档
·Perl在NT下的快速简便安装方法 (转)-CGI教程,CGI文档
·实战 FastCGI(转)二-CGI教程,CGI文档
·XML和现代CGI应用程序-.NET教程,XML应用
·perl在win32平台上直接操作打印机-CGI教程,CGI文档
·实战 FastCGI(转)五(完)-CGI教程,CGI文档
·Python 快速入门(一)-CGI教程,CGI文档
·网站 PAGEVIEW 分析系统 CGI (原创)-CGI教程,CGI文档

最新文章
·顺便说说一些指示代码
·跟我学Perl(二)
·跟我学Perl(一)
·CGI教程(5)利用CGI解码FORM
·CGI教程(4)HTML 表单
·CGI教程(3)怎样发回文档给客户端
·CGI教程(2)怎样从服务器获得信息
·CGI教程(1)简介
·CGI教程(目录)
·Perl直接入门详尽指南




版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号