2011-04-21 31 views
0

我們正在Kohana 3.1中構建一個n層風格的應用程序,該應用程序基於partner_id向我們的合作伙伴分發JSONP動力的窗口小部件。Kohana 3.1基於環境的Web服務引導和像會話一樣存儲

每個合作伙伴需要能夠調用一個小部件,並指定環境參數:測試 OR 生產與最初的電話,這將被用來選擇適當的數據庫。

我們需要我們引導到觀看$ _REQUEST [「環境」]變量,然後每當合作伙伴,使微件服務的調用保持該變量的狀態。

的問題是,在應用程序的所有請求使用bootstrap.php中,但許多要求是內部 - 即他們不拿出一個PARTNER_ID或環境變量。我們嘗試使用會話來存儲這些內容,但由於這些是服務器到服務器的GET/POST調用,所以似乎不可能在服務器上的cookie(這是無瀏覽器的GET)中存儲和調用會話ID。

有沒有人有任何建議?我們意識到我們可以在內部或外部調用每個呼叫時通過環境變量,但這看起來不太健壯。

我們存儲合作伙伴設置(PARTNER_ID索引),如控件的寬度和高度的配置文件,我們認爲大約在這裏存儲合作伙伴的環境,而不是服務器的所有接聽的話會有由合作伙伴提供,所以我們仍然需要另一種方式來觸發其他呼叫的環境並選擇正確的數據庫。

我們也想爲存儲即保持最後要求環境合作伙伴的平面文件的,但同樣的,因爲我們有一個初步經過多次內部請求,我們並不總是有知識(即我們不通常關心)在初始調用中使用哪個partner_id。

希望這是有道理的......!

+0

數據庫或memcached中的會話如何?編輯:但我想你應該傳遞用戶/會話ID與每個服務器到服務器獲取/發佈......這似乎是你不想要的。 – egis 2011-04-22 13:19:21

回答

0

的解決辦法是調用從單個控制器需要「做的東西」的模式和方法,保持PARTNER_ID只在控制器和發送所請求的數據找回曾經所有的「做的東西」的方法已經根據MVC模型運行。

即,從夥伴請求 - >路線 - >控制器 - >調用模型等 - >傳遞迴控制器 - >返回查看到夥伴

即允許PARTNER_ID由控制器保持並僅傳遞給無論模型需要它做什麼,都在MVC框架中。

如果你沒有保持MVC的範圍內,那麼事情就會明顯地變得更加複雜,你就需要存儲變量的地方。