今天遇到一個很奇怪的題,訊息如下
Notice: unserialize(): Error at offset 76 of 82 bytes
發生的情況是在為一個文件檔serialize()之後存檔,接著再從檔案中讀取出來,在讀取時就發生了這個問題,而且是只發生在新檔案內容比舊檔內容多的時侯。
一開始以為是 flock 的問題,後來發現有沒有用 flock 都一樣,但是用 Ajax 第二次作讀取的動作就正常,也就是說,在同一支程序裡,寫完檔案後再將同一個檔案讀出來,在程序結束以前都會是原先檔案的內容長度,但是內容卻是新的檔案內容,所以才會出現明明定義有 50 個字,實際上字串只有 40 個字,所以在串列記錄裡的長度欄( 76 的位罝)就會報錯囉,而 82 是舊檔的長度!
推論是 PHP 本身的 Bug ,同一程序同檔案寫入讀出,檔案的長度資訊出了問題,但不確定,有請各方高手賜教,
- 關鍵字 : 問題, 同一, flock, 長度資訊出, 長度欄, 長度, 遇到一, 讀取, 訊息如下, 舊檔內容多, 舊檔, 第二, 程序裡, 發生, 為一, 檔案讀出來, 檔案後再, 檔案內容, 檔案, 本身
0 0
2009-10-23T18:59:37+0000