CakePHP, как заставить скрипт оболочки использовать правильное соединение с базой данных

0

Я использую CakePHP 2.x

Я пытаюсь понять, как разрешить сценарию оболочки определить, является ли среда моим локальным dev-сервером или удаленным. В частности, мне нужен мой скрипт для выбора правильного подключения к базе данных, а также для правильного базового URL для ссылок.

Я решаю это для веб-приложения, выбирая соединение с базой данных с оператором switch, который проверяет $_SERVER['SERVER_NAME']. Конечно, это не вариант сценария оболочки.

Поэтому мой вопрос заключается в том, кто должен писать мой сценарий таким образом, чтобы избежать следующих проблем:

  1. Hardcoding настройки, которые могут повредить вещи при перемещении между средами.
  2. Передача всех динамических параметров в качестве параметров для моего сценария оболочки (Ex: myscript -db dev -url whocares.com)

Лучший вариант, о котором я могу думать, - установить флаг (Ex: myscript -env local), а затем сценарий динамически установить соединение с базой данных, домен и т.д. Но это все еще кажется неудобным, и я надеюсь, что там будет лучший способ, с которым я не обращаю внимания.

Теги:
cakephp
configuration

1 ответ

0

Мы используем этот плагин именно для этой цели и еще несколько.

https://github.com/josegonzalez/cakephp-environments

Он позволяет обнаруживать вашу среду или просто устанавливать ее на основе системной переменной. Прочитайте документацию, в которой все объясняется.

  • 0
    Это выглядит великолепно. Похоже, что разработчик может пройти тесты для обнаружения среды. Могу я спросить, какие тесты вы, ребята, используете для определения окружающей среды? Без $_SERVER['SERVER_NAME'] я не уверен, как отличить мой локальный сервер от удаленного (используя PHP).
  • 0
    Мы используем 4 разных машины с разными IP-адресами за балансировщиком нагрузки, поэтому мы используем IP-адреса для их обнаружения. Но, как я уже сказал, вы можете даже установить глобальную системную set CAKE_ENV=dev как set CAKE_ENV=dev (Windows), и прочитать ее из php. Или используйте имя хоста, MAC-адрес, некоторый идентификатор оборудования ... Все, что вы хотите.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню