我有一個應用程序與多個區域和各種傳入鏈接。前提是,它的工作原理是,在app_controller中,我分解這些傳入鏈接並將它們設置在會話中。CakePHP刪除頁面之間的會話
所以我有一個巨大的beforeFilter()我app_controller其捕獲這些並設置兩個變量在會話中。 Viewing.region和Search.engine,沒問題。
問題出現在會話似乎不是跨頁請求持續。因此,例如,要訪問/reviews/write(userReviews/add)應該有一個會話可用,當用戶到達該站點時設置該會話。雖然它似乎消失了!
這樣看來,除非$這個 - > PARAMS在app_controller並寫入會話變量明確地抓住了,它不會在其他網頁上。
到目前爲止,我嘗試過,在'cake'和'php'中存儲會話之間交換似乎都表現出相同的行爲。我使用'php'作爲默認值。我的Session.timeout是'120',Session.checkAgent是False和Security.level是'低'。所有這些都應該給框架足夠的寬容,讓會議有最大的空間!
我有點難以理解,爲什麼當新的頁面被請求時會話似乎被重新創建或空白。我已將requestAction()調用註釋掉,以確保不會混淆會話請求對象,這似乎沒有什麼差別。
任何幫助將是偉大的,因爲我不必重新編碼站點通過url中的參數傳遞所有各種變量,因爲這將吸引,它的工作之前,因此切換$ this - > Session->閱讀('Viewing.region')在我所有的代碼!
你有什麼不規範的用會話存儲(例如數據庫),或者是你使用任何代理/負載均衡軟件?你是否能夠在PHP中正常使用會話(例如沒有Cake框架)?對我來說,聽起來你的Apache/PHP實例實際上並不是將會話寫入磁盤,並且在PHP進程釋放其內存分配時會丟失它們。 – 2009-12-29 17:21:39
我沒有使用數據庫,但我嘗試在app/config/core中使用'cake'作爲會話處理程序,並且該文件已創建好,並且仍保留相同的php會話ID,所以我認爲它正在寫入會議可以。我不認爲有負載平衡,因爲它是一臺服務器,但我不太確定。 – 2009-12-30 10:17:24
您是否可以使用傳統PHP方法跨請求讀/寫會話?例如,<?php session_start(); $ _SESSION ['貓'] ='狗'; ?> – 2009-12-30 16:08:02