2011-06-17 14 views
9

पर आधारित डेटाबेस कॉन्फ़िगरेशन केकपीएचपी में पर्यावरण के आधार पर उपयोग किए जाने वाले एकाधिक डेटाबेस कॉन्फ़िगरेशन का सबसे अच्छा तरीका क्या है?केकपीएचपी - यूआरएल

कहें कि मेरे पास एक स्टेजिंग, प्रोड और देव सर्वर है।

धन्यवाद,
टी

उत्तर

19

आप अपने निर्माता में सेट कर सकते हैं।

class DATABASE_CONFIG { 

    var $live = array(
     'driver' => 'mysql', 
     'persistent' => false, 
     'host' => 'mysql.live.com', 
     'login' => 'root', 
     'password' => '', 
     'database' => '', 
     'prefix' => '', 
    ); 

    var $default = array(
     'driver' => 'mysql', 
     'persistent' => false, 
     'host' => 'localhost', 
     'login' => 'root', 
     'password' => '', 
     'database' => '', 
     'prefix' => '', 
    ); 


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

यह मूल रूप से आपके कॉन्फ़िगरेशन को उस स्थान के आधार पर स्विच करेगा जहां आप हैं।

+0

भयानक समाधान, धन्यवाद में! – joseym

+0

मुझे यह महान लेख मिला जो पर्यावरण के आधार पर डीबी प्रोफाइल प्रबंधित करने की इस विधि को स्थापित करने का एक बहुत ही मजबूत तरीका प्रदान करता है: http://www.sitepoint.com/deploy-cakephp-apps-on-appfog-the-right- रास्ता/ –

5

मुझे यह मिला (मेरा विकास डोमेन '.dev' के साथ समाप्त होता है);

Bootstrap.php

define('IS_LIVE',!(strpos($_SERVER['SERVER_NAME'], 'dev') !== false)); 

में database.php

<?php 
class DATABASE_CONFIG 
{ 
    var $default = array(
     'driver' => 'mysql', 
     'persistent' => false, 
     'host' => '127.0.0.1', 
     'login' => 'xxxx', 
     'password' => 'xxxx', 
     'database' => 'xxxx', 
     'prefix' => '', 
    ); 

    var $production = array(
     'driver' => 'mysql', 
     'persistent' => false, 
     'host' => '127.0.0.1', 
     'login' => 'xxx', 
     'password' => 'xxx', 
     'database' => 'xxxx', 
     'prefix' => '', 
    ); 

    function __construct() 
    { 
     if (IS_LIVE) { 
      $this->default = $this->production; 
     } else { 
      $this->default = $this->default; 
     } 
    } 
} 
+0

केक में 1.3 यह काम नहीं करता है। केक एसक्यूएल त्रुटियों को वापस करता है "एसक्यूएल त्रुटि: 1064: आपको अपने एसक्यूएल वाक्यविन्यास में एक त्रुटि है;" – giuseppe

+0

2.3.x के बारे में क्या? – Jankeesvw

संबंधित मुद्दे