Самозагрузка веб-сервисов Kohana 3.1 основана на среде и хранится как сеанс - PullRequest
0 голосов
/ 21 апреля 2011

Мы создаем приложение n-уровневого стиля в Kohana 3.1, которое распространяет виджеты с поддержкой JSONP среди наших партнеров на основе partner_id .

Каждый партнер должен иметь возможность вызвать виджет и указать параметр environment : test ИЛИ production с начальным вызовом, который будет использоваться для выберите соответствующую базу данных.

Нам нужен наш загрузчик, чтобы отслеживать переменную $ _REQUEST ['environment'] и затем поддерживать состояние этой переменной всякий раз, когда партнер делает вызов службе виджетов.

Проблема заключается в том, что все запросы в приложении используют Bootstrap.php, но многие запросы являются внутренними, т. Е. Они не имеют значения partner_id или переменной среды. Мы пытались использовать сеансы для их хранения, но так как это вызовы GET / POST от сервера к серверу, кажется невозможным сохранить и вызвать идентификатор сеанса в файле cookie на сервере (это GET без браузера).

У кого-нибудь есть предложения? Мы понимаем, что можем передавать переменную environment при каждом отдельном вызове, внутреннем или внешнем, но это не кажется надежным.

У нас есть файл конфигурации, в котором хранятся настройки партнера (индексированные partner_id ), такие как ширина и высота виджета, и мы подумали о сохранении среды партнера здесь, но не все вызовы сервер будет создан партнером, поэтому нам все равно потребуется другой способ запуска среды для других вызовов и выбора правильной БД.

Мы также подумали о сохранении плоского файла для партнера, который поддерживает последнюю запрошенную среду, но опять же, поскольку у нас много внутренних запросов после начальной, у нас не всегда есть знания (то есть мы обычно не забота) какой partner_id используется при первоначальном вызове.

Надеюсь, это имеет смысл ...!

1 Ответ

0 голосов
/ 04 мая 2011

Решение состоит в том, чтобы вызывать модели и методы, необходимые для «выполнения вещи» с одного контроллера, сохраняя partner_id только в контроллере и отправляя запрошенные данные обратно после того, как все методы «делать вещи» быливыполнить согласно модели MVC .

т.е. запрос от партнера -> маршрут -> контроллер -> вызов моделей и т. д. -> переходит обратно в контроллер -> возвращает представление партнеру

Это позволяет, чтобы partner_id хранился контроллером и передавался только тем моделям, которые требуют, чтобы он «что-то делал», в рамках MVC.

Если вы не держались в пределах границMVC, тогда все, очевидно, станет более сложным, и вам нужно где-то хранить переменную.

...