客戶支持
  首 頁 域名注冊  虛擬主機  營銷通  IDC業務  網站推廣  網站建設  企業郵局  優惠套餐  聯系我們  匯款方式  
網站首頁
客戶支持首頁
熱門文章排行
更多... 
 
熱門問題列表
首頁 -> 客戶支持
網站程序腳本超時的常見原因

查看次數:540243   更新時間:2013/10/28    

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個外鍵,一般主鍵作為表的標識,當檢索數據時,如果

  以主鍵的值來進行查找的話效率會比較高,而一些標志性的字段,如產品表的產品所屬分類、用戶

  表的用戶等級等,如果在程序中經常要用到這些字段來進行檢索數據,那么一般應該為這些字段建立

  索引,這樣檢索數據的時候性能會好很多。
  

[返 回]
佛山市億動網絡有限公司 www.72e.net (云指)
一个色综合 思思99热久久精品在线6 超碰caoprom超碰分类 <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>