2016-08-03 124 views
0

我正在基於cakephp 3開發一個基於php和mysql的處理器和內存使用方面的中等程度的項目,但爲用戶提供99%的時間完全相同的頁面。Session已經開始

所以我決定喜歡使用像我幾年前開發的this one這樣的緩存系統。它只是保存完整頁面的緩存html文件,避免對每個請求做所有的詳細說明。這是一個愚蠢的系統,但它的工作非常好。

問題是,我需要訪問會話變量進行一些檢查。要做到這一點我觸發session_start()在我的緩存系統,有時CakePHP的拋出這個錯誤時的頁面是不是已經被緩存:

Session was already started 

我怎樣才能避免這個錯誤?有沒有辦法在我的緩存系統中關閉會話,以便cakephp最終可以啓動一個新的?我曾嘗試與session_abortsession_register_shutdown(),但沒有工作,我甚至不知道這是做什麼,我需要正確的方法...

編輯:處理流程是:請求 - >緩存系統 - > cakephp。因此,我的session_start()出現在cakephp之前,我傾向於不要碰到cakephp核心文件,這就是爲什麼其他問題對我沒有用處。我想在我的緩存系統中解決這個問題。

+1

這不是一個重複的,至少不是http://stackoverflow.com/questions/10093264/load-session-start-only-if-session-does-not-exist的副本,如「問題」位於CakePHP內核中,不能簡單地像用戶級代碼那樣更改,這應該以不同的方式修復。 – ndm

+0

不管是關閉會話還是讓CakePHP再次打開它是「_正確的方式_」,使用'session_abort()',「_doesn't work_」究竟發生了什麼可能意味着什麼? (它應該工作) – ndm

回答

0

您可以在嘗試調用session_start()之前檢查會話是否已經開始。

if(!isset($_SESSION)) { 
    session_start(); 
} 
+0

流程是:請求 - >緩存系統 - > cakephp。所以我的session_start出現在cakephp之前,我不想觸碰cakephp核心文件,這就是爲什麼其他問題對我沒有用處。我想在我的緩存系統中解決這個問題。 –

+0

@ ToX82噢,好的。這是這個問題的重要信息。 – iyop45

+0

你是對的:)我用這些信息編輯了這個問題,謝謝你的回答 –