2012-02-25 4 views
2

Мне было интересно, есть ли способ настроить конфигурацию, где у меня могут быть две записи базы данных, которые работают, когда среда является локальной и на сервере.Файл конфигурации CakePHP

Я нашел решение долгое время назад, выполняя переключатель через код. Не удалось найти его сейчас. Как вы, ребята, это делаете?

ответ

1

Я использую класс конфигурации, который делает именно то, что: http://www.dereuromark.de/2010/08/17/development-vs-productive-setup

Недавно я переписал его на 2.0 в качестве версии плагина. Теперь заботится о тестовых средах и сокращает количество строк конфигурации вы должны написать: http://www.dereuromark.de/2012/02/25/dynamic-database-switching/

+0

Спасибо, Марк :) вышеупомянутый ответ, который я поставил, также работает. любая идея, почему ваш метод лучше? –

+1

его не о лучшем. моя делает несколько дополнительных вещей, имеет более чистый подход к этому (DRY), как описано в сообщении в блоге. он также работает с CLI (используя массив 'path'). но если ваше решение работает для вас, почему бы и нет. – mark

1

Я думаю, что на основе IP в локальной среде IP является 127.0.0.1 и в живой среде IP никогда не бывает 127.0.0.1

Мой взгляд

Благодаря

чек с Lib/Cake/Utility/String.php увидеть функцию по имени общественности статической функции UUID()

веселит

Еще раз спасибо

+0

да это работает какие-то, что похоже .. блин Google не может найти меня, что запись в блоге: P –

+1

чека с Lib/Cake/Utility/String.php см функции с именем общественностью статической функцией UUID() веселит –

1

Это работало

class DATABASE_CONFIG { 

    public $default = array(
     'datasource' => 'Database/Mysql', 
     'persistent' => false, 
     'host' => 'localhost', 
     'login' => 'username', 
     'password' => 'password', 
     'database' => 'database_name', 
     'prefix' => '', 
     //'encoding' => 'utf8', 
    ); 

    public $live = array(
     'datasource' => 'Database/Mysql', 
     'persistent' => false, 
     'host' => 'db.HOST.net', 
     'login' => 'username', 
     'password' => 'password', 
     'database' => 'database_name', 
     'prefix' => '', 
     //'encoding' => 'utf8', 
    ); 

    public function __construct(){ 
     if (isset($_SERVER) && isset($_SERVER['SERVER_NAME'])) { 
      if (strpos($_SERVER['SERVER_NAME'], 'localhost') === false) { 
       $this->default = $this->live; 
      }  
     } 
    } 

} 
+1

вас попробовал испечь с этим? Раньше я использовал его, может быть, 1.2, и выпекать не получилось. Также за балансировкой нагрузки ваш сервер SERVER_NAME по умолчанию будет localhost, а не хорошим решением imo. – dogmatic69

5

У меня есть установки с локальными файлами конфигурации. Добавить следующие строки в нижней части приложения/Config/core.php:

if(file_exists(ROOT.'/app/config/core.local.php')) { 
    include_once(ROOT.'/app/config/core.local.php'); 
} 

В core.local.php я могу переопределить все параметры, которые отличаются на локальной машине. То же самое касается database.php.

Смежные вопросы