Re: [問題] 網路常斷線與session儲存的資料
謝謝大家的回應,但是目前偶而還是有這個問題,
我做了幾個處理,不曉得是否還有其他原因,懇請大家幫忙看一下問題可能在哪
※ 引述《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
討論串 (同標題文章)