保存數(shù)據(jù)的方法很多,除了cookie session外,可以生成臨時文件來保存數(shù)據(jù),也可以用php的memcached組件把數(shù)據(jù)保存在內(nèi)存里。
創(chuàng)新互聯(lián)于2013年創(chuàng)立,是專業(yè)互聯(lián)網(wǎng)技術服務公司,擁有項目網(wǎng)站制作、網(wǎng)站建設網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元興化做網(wǎng)站,已為上家服務,為興化各地企業(yè)和個人服務,聯(lián)系電話:18980820575
1) 空間的比較
serialize在編碼后大概是json的1.5倍。
原因:
serialize后字符串包含了子串的長度,這可能是速度方面的優(yōu)化,但是測試結(jié)果不盡人意。
serialize有更加詳細的類型區(qū)分,而json只有四種類型,并且是以簡單的符號表示。
2)速度的比較
在較小數(shù)據(jù)的情況下, serialize比json快數(shù)量級。
在大數(shù)據(jù)量的情況下,json比serialize稍微差一點
3)處理對象
json無法處理對象方法等數(shù)據(jù)。
4)使用范圍
在前后端交互一般都使用JSON,另外,目前JSON只支持UTF-8編碼的數(shù)據(jù)。
序列化使用serialize,特別是對象的存儲。這是其存在的意義。
與對象無關的數(shù)據(jù)存儲可以使用json,如包含大量數(shù)字的數(shù)組等。
這篇博客概括滿全面:
當然是在服務器端,但不是保存在內(nèi)存中,而是保存在文件或數(shù)據(jù)庫中。
默認情況下,php.ini
中設置的
SESSION
保存方式是
files(session.save_handler
=
files),即使用讀寫文件的方式保存
SESSION
數(shù)據(jù),而
SESSION
文件保存的目錄由
session.save_path
指定,文件名以
sess_
為前綴,后跟
SESSION
ID,如:sess_c72665af28a8b14c0fe11afe3b59b51b。文件中的數(shù)據(jù)即是序列化之后的
SESSION
數(shù)據(jù)了。
如果訪問量大,可能產(chǎn)生的
SESSION
文件會比較多,這時可以設置分級目錄進行
SESSION
文件的保存,效率會提高很多,設置方法
為:session.save_path="N;/save_path",N
為分級的級數(shù),save_path
為開始目錄。
當寫入
SESSION
數(shù)據(jù)的時候,PHP
會獲取到客戶端的
SESSION_ID,然后根據(jù)這個
SESSION
ID
到指定的
SESSION
文件保存目錄中找到相應的
SESSION
文件,不存在則創(chuàng)建之,最后將數(shù)據(jù)序列化之后寫入文件。讀取
SESSION
數(shù)據(jù)是也是類似的操作流程,對讀出來的數(shù)據(jù)需要進行解序列化,生成相應的
SESSION
變量。
存儲的是相對路徑,可以到網(wǎng)站服務器上查看,應該有upload文件夾,里面就是存儲的圖片,這樣寫的好處是節(jié)省了數(shù)據(jù)庫存儲空間,轉(zhuǎn)移的時候可以直接將整個服務器的圖片打包轉(zhuǎn)移。
訪問的時候,前面可以拼接域名和指定的路徑,這些后臺可以輕松獲取到,然后拼接上服務器的路徑,我們就可以直接在網(wǎng)頁上訪問到圖片了。
這是很常見的圖片數(shù)據(jù)庫保存方式,和直接把圖片的二進制存入數(shù)據(jù)庫,這樣的方式便于檢索,占用空間小。當然,目前主流都采用oss來單獨存儲文件了,就是有專門的文件服務器,這個時候,一般存儲的是完整的圖片路徑。