2012-06-07 72 views
2

我目前正在開發一個在Amazon EC2上運行的Facebook應用程序。該應用程序正在運行,大部分開發已完成,但我們無法讓會話持續。我們使用PHP會話save_path技巧嘗試了PHP默認會話處理,數據庫處理和memcache處理。我們已經嘗試搞亂ini設置,如auto_start,無濟於事。PHP會話不會持續在亞馬遜EC2上

奇怪的問題是初始會話寫入會寫入,但第一個寫入後的任何後續寫入都不會保存。我們可以看到會話cookie持續存在,但第一次寫入後數據的實際寫入總是失敗。這個奇怪的問題適用於我們使用的任何會話處理程序。

我們EC2設置如下:

  • 開發:1組的64位Linux服務器,1臺mongodb的服務器,1個elasticache簇
  • 分段:1組的64位Linux服務器,1臺mongodb的服務器,1個elasticache簇
  • PROD:2的64位用1個負載平衡器Linux服務器,3個mongodb的服務器與replicaset,2個彈性疼痛簇

會話的問題是在所有環境中可重放。我在這裏嘗試了我所知道的一切,以及我在谷歌搜索時發現的任何東西。

僅供參考,我們使用的是CakePHP 2.1,但也嘗試了CakePHP之外的會話。

+0

你能發佈你最簡單的可重複的代碼嗎?沒有人似乎有同樣的問題,所以它可能是你的代碼中的東西。 – Danack

回答

0

檢查您的php.ini中的session.save_path

閱讀本太:http://php.net/manual/en/function.session-save-path.php

此外,您可能要發佈的所有會話php.ini中的*部分。

+0

所以在更多的調試之後發現了一些東西。我注意到我的ini設置沒有被編寫,我後來發現Facebook SDK自動啓動會話,這導致CakePHP會話永遠不會被初始化。在移動一些代碼後,我的ini設置現在正在寫入。 它似乎到目前爲止,但一件小事。我將save_handler設置爲memcache,並且看到正在寫入的數據,但是它們被寫爲 .lock,如果刷新頁面,則不會保留,每次都會得到一個全新的會話ID。只發生在memcache中。 –