PHP和ASP.NET在Session實現(xiàn)和管理機制上有什么差異-創(chuàng)新互聯(lián)

本篇內(nèi)容介紹了“PHP和 ASP.NET在Session實現(xiàn)和管理機制上有什么差異”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

公司專注于為企業(yè)提供網(wǎng)站設計制作、網(wǎng)站建設、微信公眾號開發(fā)、商城網(wǎng)站建設,成都微信小程序,軟件定制制作等一站式互聯(lián)網(wǎng)企業(yè)服務。憑借多年豐富的經(jīng)驗,我們會仔細了解各客戶的需求而做出多方面的分析、設計、整合,為客戶設計出具風格及創(chuàng)意性的商業(yè)解決方案,創(chuàng)新互聯(lián)公司更提供一系列網(wǎng)站制作和網(wǎng)站推廣的服務。

Session篇:

PHP默認使用文件存儲session數(shù)據(jù), asp.net 默認保存在IIS進程內(nèi)存中

PHP和 ASP.NET在Session實現(xiàn)和管理機制上有什么差異PHP和 ASP.NET在Session實現(xiàn)和管理機制上有什么差異PHP和 ASP.NET在Session實現(xiàn)和管理機制上有什么差異
PHP方式優(yōu)點:穩(wěn)定可靠不易丟失,nginx或apache服務器重啟不影響session丟失,session穩(wěn)定可靠。整過機制簡易透明,用戶可以直接刪除session目錄下的文件讓session失效,可以方便地實現(xiàn)asp.net 很難實現(xiàn)的一些特殊需求,如需要在用戶的請求或系統(tǒng)某些事件發(fā)生后要讓指定的A用戶session失效,然后必須強制從數(shù)據(jù)庫讀最新記錄,假如有這一樣矛盾的性能優(yōu)化場景設計:假如用戶表User有余額字段Balance, 要讓用戶A登錄自己的后臺看到自己的余額是最新的,而又不想每刷新一次面就請求一次數(shù)據(jù)庫造成不必要的壓力,最好的做法是把某用戶的記錄實體保存在Session當中,每次從Session中讀取自己的余額字段顯示,就不會給數(shù)據(jù)庫造成壓力,只有當余額字段 Balance變化后即時清除掉這用戶的Seesion然后強制讓他去讀最新的數(shù)據(jù)庫字段,但當其它事件發(fā)生時如:其它用戶給A轉賬后要清除A的緩存,系統(tǒng)發(fā)生的退款、扣款、獎勵到余額引起余額變化時要清除A的緩存,由于php的透明機制直接刪除對應session文件就可以,但用iis就很麻煩了,由于微軟偏向于session放在內(nèi)存中,封閉成黑盒又沒提供對應操作接口就悲劇了,只有通過其他辦法曲線救國。

PHP方式缺點:性能欠佳不如保存在內(nèi)存里快,而且產(chǎn)生大量的小文件,反復創(chuàng)建刪除 這些小文件會造成磁盤碎片久而久之會拖慢整個磁盤的性能,產(chǎn)生大量文件句柄占用操作系統(tǒng)文件句柄,進而影響性能,網(wǎng)站訪問量上升后是個悲劇,可能在一個目錄下產(chǎn)生數(shù)百萬個小文件,即時運行在linux這樣一切皆文件思想的操作系統(tǒng)上也是非常影響文件系統(tǒng)性能,會嚴重拉低整個操作系統(tǒng)的磁盤性能。所以這個默認機制性能上不如IIS的默認存儲在進程存儲快。 那些神吹開源技術性能設計比windows先進的人自行打臉,最近深入了解lamp,lnmp后發(fā)現(xiàn)有很多過時的設計無法跟上時代,如php無法使用真正的數(shù)據(jù)庫連接池等很多比原本想像來嚴重得多的問題,當然 般都會有第三方非主流折騰代替的方案,如使用memcache內(nèi)存方式保存session在內(nèi)存中也是可以的,但需要手工折騰一下。

PHP分布式session的支持:在高并發(fā)多臺服務器負載均衡的環(huán)境中,兩臺nginx 或apache要共享session 一般是把session保存在數(shù)據(jù)庫中,然后不同的負載主機共連一個數(shù)據(jù)庫來實現(xiàn),數(shù)據(jù)庫的性能和讀寫文件實際沒有本質(zhì)區(qū)別,穩(wěn)定性依然強,但性能依然是弱點
ASP.NET方式優(yōu)點:速度快,不用讀寫磁盤顯然這是很自然的是

ASP.NET方式缺點:很不穩(wěn)定,不要說重啟IIS網(wǎng)站這樣的極端操作會丟失Session,就算是改動了配置文件 web.config或者變動了bin目錄下的dll導致網(wǎng)站重新編譯的操作都會重置內(nèi)存導致Session丟失,這就是為什么在asp.net 開始調(diào)試期間常常遇到測試人員登錄系統(tǒng)沒幾秒就可能session丟失的奇怪幻像,一般都是有程序員在頻繁更新程序,只要更新一次就全面丟失一次session; 微軟的解決方案也足夠簡單好用,使用一個獨立的ASP.NET State Service狀態(tài)服務進程來保存session信息,注意使用ASP.NET State Service后數(shù)據(jù)還是保存在內(nèi)存中,只不過是一個獨立的服務進程,默認通過監(jiān)聽tcpip=127.0.0.1:42424端口跨進程通信保存信息,

這樣就算IIS重啟也不會導致用戶登錄session丟失,穩(wěn)定性解決了,同時數(shù)據(jù)還是保存在內(nèi)在中速度性能遠高于php的文件存儲方案。而且狀態(tài)服務每臺電腦都默認安裝,只需要啟動就行。方便性和性能已經(jīng)甩下php不在一個級別了。

ASP.NET分布式session的實現(xiàn):在高并發(fā)多臺服務器負載均衡的環(huán)境中,兩臺IIS要共享session非常簡,只需要共同連接一臺狀態(tài)服務器就可以共享session,通過簡單設置就可以讓狀態(tài)服務打開遠程訪問功能。當然asp.net也是支持把session保存到數(shù)據(jù)庫的,但很少有人這樣用沒有太大的理由采用這種方案。

“PHP和 ASP.NET在Session實現(xiàn)和管理機制上有什么差異”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注創(chuàng)新互聯(lián)-成都網(wǎng)站建設公司網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

標題名稱:PHP和ASP.NET在Session實現(xiàn)和管理機制上有什么差異-創(chuàng)新互聯(lián)
分享URL:http://muchs.cn/article22/ijhcc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供關鍵詞優(yōu)化網(wǎng)站排名、小程序開發(fā)、品牌網(wǎng)站制作微信公眾號、Google

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設