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

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

1.程序死循環。
 
  出現死循環很多情況下(xià)都是因爲程序缺少必要的檢測而導緻的,
  
  比如 http://www.domain.com/show.asp?id=11 打開(kāi)這個頁面沒有問題,

  而 http://www.domain.com/show.asp?id=12 就有問題,同樣的程序,爲什麽

  會出現這樣的問題呢?有很多程序員(yuán)在寫asp程序的時候,都喜歡用 On Error Resume Next

  這個語句來屏蔽掉錯誤,這樣會導緻程序出錯時一(yī)直執行下(xià)去(qù)(死循環),比如當數據庫裏

  有id爲11這條記錄的時候,程序不會出問題,但當頁面所傳參數id爲12,而數據庫中(zhōng)又(yòu)沒有

  id爲12這條記錄的時候,頁面就出錯了,因爲使用了 On Error Resume Next,頁面

  并沒有中(zhōng)止運行,而是一(yī)直運行下(xià)去(qù),因爲程序前面就已經出現了不合法的數據,所以後面就

  很容易因爲前面沒有正确的數據而死循環。

2.程序有嵌套查詢

 比如以下(xià)程序就使用了嵌套查詢
    <%
        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 '這裏用了嵌套查詢,效率會下(xià)降很多,如果數據庫的時候根本沒法運行
               
                    while not rs2.eof
                       
                        response.write rs("id") & "=" & rs2("name")
                       
                        rs2.movenext
                    
                     wend

                rs.movenext
        wend
      %>
      嵌套查詢會導緻數據庫的查詢量呈指數級上升,甚至會導緻一(yī)個頁面查詢數據庫的次數達到幾百
     
      甚至幾千次,這樣會導緻一(yī)個程序的效率非常低,像上面的程序如果改爲連表操作,查詢數據庫的

      次數會少很多,并且在設計數據庫的時候應該将 b 表的 fid 字段建立索引,否則連表查詢的時候

      性能會差很多。

      <%
        sql = "select a.id ,b.name from a left join b on b.id=a.id" '使用連表操作,并用具體(tǐ)的字段名代替 *,程序是高效很多
        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 數據庫,數據庫的容量比較大(dà)
  
  對于網站應用來說,如果采用access數據庫,當數據庫的容量比較大(dà)(比如超過 100M 以上),

  性能就可能會出現問題,所以訪問量大(dà)的網站一(yī)般都采用 sqlserver、mysql、oracle 等性能

  比較高的數據庫引擎。

4.數據庫的索引沒健好。

  一(yī)般來說,一(yī)個表至少有一(yī)個主鍵和N個外(wài)鍵,一(yī)般主鍵作爲表的标識,當檢索數據時,如果

  以主鍵的值來進行查找的話(huà)效率會比較高,而一(yī)些标志(zhì)性的字段,如産品表的産品所屬分(fēn)類、用戶

  表的用戶等級等,如果在程序中(zhōng)經常要用到這些字段來進行檢索數據,那麽一(yī)般應該爲這些字段建立

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

[返 回]
上海陽桃網絡科技有限公司 vip.bangweb.cn (百川網絡)