poniedziałek, 23 grudnia 2013

Produkcyjna i deweloperska baza danych w CakePHP

Większość z osób projektujących strony zazwyczaj korzysta z dwóch serwerów i dwóch serwerów bazy danych - deweloperskiego (zwanego też rozwojowym, lokalnym, testowym, itp.) oraz produkcyjnym (czyli tzw. końcowym).

Jako, że prace wciąż wymagają poprawek i testów, to żmudne staje się przełączanie konfiguracji między tymi serwerami.

W tym przypadku zaprezentuje jak poradzić sobie w CakePHP z przełączaniem bazy danych między deweloperską a produkcyjną, za pomocą stanu debugowania.

Config/database.php:
class DATABASE_CONFIG {

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

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

 public function __construct() {
  if (Configure::read('debug') !== 0) {
   $this->default = $this->development;
  }
 }
}
Klasa DATABASE_CONFIG jest klasą domyślną w której ustawiamy konfigurację baz danych.
Zmienna $default to tablica ustawień domyślnej bazy danych. To znaczy, iż jeśli w dowolnym miejscu naszej aplikacji nie wskażemy zmiany konfiguracji to ta będzie ładowana.
Natomiast zmienna $development (nazwa dowolna) zawiera ustawienia na moim serwerze lokalnym. Takich zmiennych możemy tworzyć dowolnie wiele.

Jako, że przyjętą zasadą jest to iż stan debugowania naszej aplikacji na serwerze produkcyjnym powinien być ustawiony na 0, to tym sposobem możemy rozpoznać w konstruktorze naszej klasy i ustawić dowolną inną konfigurację przypisując ją do zmiennej $default.

Należy pamiętać, że są także inne rozwiązania zmiany baz danych, jak chociażby zmienna $useDbConfig używana w naszych modelach lub za pomocą klasy ConnectionManager. Te rozwiązania jednak mają lepsze zastosowanie gdy chcemy zmienić bazę w trakcie działania naszej aplikacji.

Brak komentarzy:

Prześlij komentarz