Re: [問題] 網路常斷線與session儲存的資料

看板Web_Design作者 (thinkfun)時間15年前 (2010/10/20 08:41), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串3/7 (看更多)
謝謝大家的回應,但是目前偶而還是有這個問題, 我做了幾個處理,不曉得是否還有其他原因,懇請大家幫忙看一下問題可能在哪 ※ 引述《TonyQ (沉默是金。)》之銘言: : ※ 引述《thinkfun (thinkfun)》之銘言: : : 最近用ASP.NET (VB) + Access DB 寫了一個很陽春的問卷網站 : : 但是現在遇到一個問題,想懇請大家看看問題出在哪 : : 我用我的電腦測試都沒問題,但是請其他同學測試時, : : 發現網站不是很穩,常常會在第一到三個資料表有資料,第四個資料表就沒資料了, : : 這個問題最常發生在網路不穩的同學身上,目前有幾個想法 : : 1. 網路如果短暫斷線,是否超過某個時間,再重新連線上時, : : session儲存的值會消失? : 理論上網路斷線不會有影響,session 的 scope 可以看看網路資料, : default session timeout 「通常」是 30 min , : 關掉 browser 也會幹掉 session 。 我設定 session.timeout=240 每個網頁連線最多30min, 應該不會有這個問題 : : 2. 我目前的設計,是四個網頁,每個網頁都會讀取資料庫並儲存 : : 如何把每個網頁的變數資料暫存,在第四個網頁存入資料庫? : 不每個網頁分別存取的理由是? : 如果這四個問卷都要填很久,那寧可開暫存table也比存session好。 我目前是每個網頁都存入資料庫,但是只有第三、四個網頁常常出現 資料沒有存入資料庫的情形,所以才想,會不會是經常讀取資料庫, 才造成資料遺失。 : : 3. 是否頻繁讀取資料庫,是造成第四個資料表沒有資料的原因? : 這要看你的結構怎麼設計,但是基本上我個人覺得是你code有問題。 : : 4. 對Access DB而言,他的處理能力如何?只要10個人連線,每個人讀取四次資料庫 : : 也就是40次的資料庫存取,他就掛了嗎 XD : 正常的 code 來講沒這麼弱啦,除非你每個 connection 都開了不關, : 這樣可能多到一個次數他就連不上了,不過這也不只 access 會這樣。 關於這點想問幾個問題, 1.我使用sqldatasource 連結資料庫,並把連結字串設定在web.config, 這是否會造成進入網頁時,資料庫的連線一直保持開啟? 但我搜尋後又發現,sqldatasource 會自動關閉資料庫連結,所以不需 處理connection 的問題。 2.根據上述,sqldatasource 連結資料庫是否一段時間後會自動關閉連結 導致後續的資料遺失? : : 5. my sql是否較不會有這方面的顧慮. : 相信我,你的使用量沒有大到有這方面的問題。 : : 感謝大家的幫忙 : 其實才幾十個人存取,沒這麼弱啦。 : 至少我曾經拿來寫過一個同時有20個人以上同時瀏覽的簡易ajax留言板, : 一晚上處理一百多則留言,還活的好好沒掛過。 : (雖然這對 db 來講算是非常微量微量的操作, : 他好歹也是小 db ,不是小玩具好嗎XD) : 還有另一個 case 是拿來寫全校教官的值勤紀錄報表, : 運作2-3年也沒出過狀況啊。 目前有另外想到幾個可能原因 1. 這個網站,是架在一個 提供 Apache 和 IIS 的環境中, 是否另一個原因是Apache 和 IIS 衝突導致的? 但是他們提供服務的port 不同,這樣還是會產生衝突嗎? 2. 因為 只有第三、四個網頁有問題,所以我把第三個網頁的程式碼貼上來 請大家看看是否程式在撰寫中有什麼問題,導致這種情況發生 原本下面的12~18行程式,是放在21~22行程式間,這是造成問題的原因嗎? Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Dim selectedid As Integer, InsertCommandString, UserInput, Product, Addr As String, P_Type As Integer Dim Blist() As String ={"a","b","c","d"} DClist() As String ={"e","f","g","h"} selectedid = Application("counter1") pname = Session("P_name") Addr = Request.Cookies("Addr").Value UserInput = "ignore" 12 If Session("Product") <> 0 Then 13 Product = DClist(pname) 14 P_Type = Session("Product") 15 Else 16 Product = Blist(pname) 17 P_Type = Session("Product") 18 End If SqlDataSource1.SelectCommand = "SELECT * FROM [Q1] where id=" & selectedid GridView1.DataBind() 21 If CInt(GridView1.Rows.Count.ToString()) <= 0 Then '因為寫入資料庫的部分有成功寫入過,所以我略過InsertCommandString的設定 22 SqlDataSource1.InsertCommand = InsertCommandString SqlDataSource1.Insert() Response.Redirect("./Personal.aspx") Else Response.Redirect("./Personal.aspx") End If End Sub -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.127.140.2

10/20 10:12, , 1F
其實可以在前端解決的話,就不要分頁面最好了...
10/20 10:12, 1F
文章代碼(AID): #1ClZh797 (Web_Design)
討論串 (同標題文章)
文章代碼(AID): #1ClZh797 (Web_Design)