2017-09-16 79 views
-3

我有一個2頁的PHP代碼。會話變量沒有及時加載

第1頁:允許將變量輸入加載到幾個數組中,然後加載到使用這些數組創建的幾個SESSION變量中。

第2頁:創建並顯示一個利用所有SESSION變量並使用「imagecreate」的png。

有時,隨機第2頁並不總是在創建pgn之前加載所有SESSION變量,導致格式錯誤的圖像。

刷新頁面2然後創建正確的圖像,確認所有的會話變量終於被傳遞到第2頁

能否PNG創建被延遲,直到所有的會話變量加載後或有另一種解決方案?

+1

什麼是pgn? ...你的意思是PNG嗎?此外,查看兩個腳本的代碼以查看會話處理將非常有幫助。 –

+0

我認爲Ozzie的意思是PNG圖像文件不是「pgn」。而所有這些下來的選民,給奧茲休息一下,這是他/她的第一篇文章。至少要評論你爲什麼投票否決,以便他/她可以改進。 –

+0

PHP會話確保沒有併發性,因此如果在頁面2之前加載頁面1,數據將在那裏。但是,如果您同時打電話給兩個頁面,則無法保證首先加載哪個頁面。在我看來,問題不在於會話,而只是你不確保事物按順序加載。 – Havenard

回答

1

你的問題指出

可變投入多個陣列,然後將使用這些陣列創建多個Session變量,則不應使用會話變量這樣的數據。

隨着流量的增長,如果您爲會話存儲中的每個用戶存儲大量數據,則將耗盡磁盤空間。

而不是SESSION可變使用您的用戶的瀏覽器爲您的需要localStorage,他們會更快,更小的磁盤空間負載。

+0

我同意SESSION變量不應該被使用,但是我們好奇他們爲什麼沒有被第2頁正確讀取?如上所述,來自Ozzie的一些代碼會有所幫助。 –

+1

當你的頁面在你的服務器完成處理之前得到渲染時,你放置的變量就越多,服務器處理它的時間就越多,你的響應就會越遲,而有些項目是未處理的 –

0

感謝您的回覆。 問題不是加載SESSION變量,而是加載緩存圖像而不是新創建的圖像。 在圖像名稱中包含一個時間戳,這解決了問題。 即$ plan [time()] = imagecreatetruecolor(1000,1000);