论坛: 网站建设 标题: 怎样编程才能加速用cgi程序打开文件的速度? 复制本贴地址    
作者: aoming [aoming]    版主   登录
特别是当文件中数据较多时,打开的速度就变的特别慢.
听老大说过20cn的数据(比如密码)也是用文件的方式保存的,但是发觉20cn打开帖子的速度却不慢,请问老大能否介绍一下是怎么搞的?谢谢!

哦,对了,服务器UNIX平台,支持perl_cgi.

地主 发表时间: 11/20 18:31

回复: NetDemon [netdemon]   ADMIN   登录
加快perl-CGI速度的最好方法,就是使用fast-cgi,不过这需要服务器的支持,好多虚拟主机服务商都不会提供
而普通的perl打开文件只有一个open可用,因此想要加快的话,只有让文件尽量小,因为它没有类似C的文件指针,不能只读取文件的某一部分。
就20CN的论坛来说,帖子的存放是这样的:
每个板块一个目录,此目录有一个类似索引的文件list,每一行的内容是
帖子id|标题|作者|回复者|时间
这样当打开某一论坛的时候,只需要读取这个文件,把内容print出来就行了
当点击时再根据id读取这个id的帖子,而每一个id也是一个文件的。也是直接print出来就行了
这样有比较快的读取,不过发帖时需要处理的工作就比较多一点,不过没关系,因为发帖比读帖少了很多。

例外每一个用户也是用一个文件来保存其数据的,总之就是以小文件的形式来提高速度的

至于程序本身没什么好说的,很普通,读取文件的函数就是这样
sub open_read {
my($file)=@_;
  unless(open(FH,"$file")) {
    errmsg("Can't Open File: $file!");
    exit;
  }
   unless(flock(FH,LOCK_SH)) {
    errmsg("Can't Lock File: $file");
  }
}



B1层 发表时间: 11/25 23:00

论坛: 网站建设

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号