亿联网   外贸商城型、宣传型、外贸建站服务商
10年网站制作经验,满意收工,诚信第一
中文版 | 旧版本 | 加入收藏
咨询电话:181 2396 5128 点击这里给我发消息 点击这里给我发消息
 
首页 购物商城 宣传网站 定制网站 域名·主机·邮箱 成功案例 网站知识 增值服务 联系我们
        最新动态
        网站建设
        域名注册
        虚拟主机
        企业邮局
        成品网站
        网络SEO优化
        技术知识
        CSSDIV
        AJAX
        PHP知识
        行业资讯
        400电话常见问题
        可信网站常见问题
        Ftp常见问题
 
虚拟主机 位置:首页 > 网站知识 > 虚拟主机
网站程序脚本超时的常见原因
关键字:网站建设 网站制作 网站设计 订购网站  宣传网站  定做网站    来源:   浏览: 6023 人次
 

1.程序死循环。
 
  出现死循环很多情况下都是因为程序缺少必要的检测而导致的,
  
  比如 http://www.domain.com/show.asp?id=11 打开这个页面没有问题,

  而 http://www.domain.com/show.asp?id=12 就有问题,同样的程序,为什么

  会出现这样的问题呢?有很多程序员在写asp程序的时候,都喜欢用 On Error Resume Next

  这个语句来屏蔽掉错误,这样会导致程序出错时一直执行下去(死循环),比如当数据库里

  有id为11这条记录的时候,程序不会出问题,但当页面所传参数id为12,而数据库中又没有

  id为12这条记录的时候,页面就出错了,因为使用了 On Error Resume Next,页面

  并没有中止运行,而是一直运行下去,因为程序前面就已经出现了不合法的数据,所以后面就

  很容易因为前面没有正确的数据而死循环。

2.程序有嵌套查询

 比如以下程序就使用了嵌套查询
    <%
        sql = "select * from a"
        set rs = server.createobject("adodb.recordset")
        rs.open sql,conn,1,1
        while not rs.eof
                sql2 = "select * from b where fid=" & rs("id")
                set rs2 = server.createobject("adodb.recordset")
                rs2.open sql2,conn,1,1 '这里用了嵌套查询,效率会下降很多,如果数据库的时候根本没法运行
                
                    while not rs2.eof
                        
                        response.write rs("id") & "=" & rs2("name")
                        
                        rs2.movenext
                     
                     wend

                rs.movenext
        wend
      %>
      嵌套查询会导致数据库的查询量呈指数级上升,甚至会导致一个页面查询数据库的次数达到几百
      
      甚至几千次,这样会导致一个程序的效率非常低,像上面的程序如果改为连表操作,查询数据库的

      次数会少很多,并且在设计数据库的时候应该将 b 表的 fid 字段建立索引,否则连表查询的时候

      性能会差很多。

      <%
        sql = "select a.id ,b.name from a left join b on b.id=a.id" '使用连表操作,并用具体的字段名代替 *,程序是高效很多
        set rs = server.createobject("adodb.recordset")
        rs.open sql,conn,1,1
        while not rs.eof
                        
                response.write rs("id") & "=" & rs("name")
                        
                rs.movenext
        wend
      %>

3.网站采用 access 数据库,数据库的容量比较大
  
  对于网站应用来说,如果采用access数据库,当数据库的容量比较大(比如超过 100M 以上),

  性能就可能会出现问题,所以访问量大的网站一般都采用 sqlserver、mysql、oracle 等性能

  比较高的数据库引擎。

4.数据库的索引没健好。

  一般来说,一个表至少有一个主键和N个外键,一般主键作为表的唯一标识,当检索数据时,如果

  以主键的值来进行查找的话效率会比较高,而一些标志性的字段,如产品表的产品所属分类、用户

  表的用户等级等,如果在程序中经常要用到这些字段来进行检索数据,那么一般应该为这些字段建立

  索引,这样检索数据的时候性能会好很多。

[ 关 闭 ]
由于一些内容和图片来源于互联网,如果发现有涉嫌侵犯您的版权,请联系QQ:274087488 或发送邮件至:274087488@qq.com,我们将立刻删除涉嫌侵权的内容。
首页  |  关于我们  |  网站建设  |  域名注册  |  虚拟主机  |  企业邮箱  |  网站知识  |  网络SEO优化  |  网站地图  |  法律声明  |  友情链接  |  客户反馈  |  联系我们
电话:0755-25692900 传真:0755-25692900 E-mail:128@128.in 网址 http://www.128.in
Copyright © 2005-2019 深圳市一二八软件有限公司 All Right Reserved. 备案/许可证编号:粤ICP备15073280号

扫一扫,加我微信