Использование Zend на Quercus/Tomcat и подключение к Oracle

Я использую Zend на Quercus/Tomcat и хочу подключиться к Oracle, используя Zend_db.

(a) Как подключить Quercus к источнику данных Tomcat JNDI к базе данных Oracle

(b) Как заставить Zend_db подключаться к этому источнику данных

PDO::getAvailableDrivers() показывает вывод ниже

0-> MySQL

1-> PgSQL

2-> Java

Я нашел несколько шагов для (а), но я не уверен, как это проверить. 3-> JDBC

1 ответ

Это то, что я делаю для Zend, чтобы подключиться к оракулу, и он отлично работает

в библиотеке Zend в каталоге Zend\Db я создал файл с именем Dbname.php

<?php
date_default_timezone_set("Europe/London");
require_once 'Zend/Registry.php';

/**
 * Class for creeating an Oracle SQL Dbname.
 *
 * @Author     Chris Robinson cghrmauritius@gmail.com
 */
class Zend_Db_Dbname
{
 public static function get($arr) {

     $enviroment = Zend_Registry::get("enviroment");

     if(isset($arr[$enviroment.":db"])){

         $retArray = $arr[$enviroment.":db"];

         $dbName = "(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)
                        (HOST={$retArray['host']})(PORT={$retArray['port']})))";

         $dbName .= "(CONNECT_DATA=";

         if(isset($retArray['pooled'])){
             if($retArray['pooled'] == 1)
                $dbName .= "(SERVER = POOLED)";
         }
         if(isset($retArray['sid'])){
            $dbName .= "(SID={$retArray['sid']})))";
         }else if(isset($retArray['serviceName'])){
            $dbName .= "(SERVICE_NAME={$retArray['serviceName']})))";
         }

         $retArray['dbname'] = $dbName;

         unset($retArray['pooled']);

         return $retArray;
     }
     return "Missing '".$this->enviroment.":db' from application.ini";       
 }
}


?>

также у меня есть INI-файл ('myfilename.ini'), который содержит все детали подключения к БД для наших разработчиков и производственные БД, который выглядит следующим образом

[global]

salt    = "qZPJeZbQv])7fnKxS’U0\2V^Eg.|})+obZ:H6|y.[#EBqo;Evp"
api     = "d5f75f4ddc0a5cead40b4269ca28b217b71ed893";

[production]

debug = false

[production:db]

host    = xx.xx.xx.xxx
username    = myusername
password    = mypassword
port    = xxxx
charset     = "WE8ISO8859P1"
pooled  = true
sid     = mysid

[development]

debug = true

[development:db]

host        = xx.xx.xx.xxx
username    = myusername
password    = mypassword
port        = xxxx
charset     = "WE8ISO8859P1"
pooled      = false
sid         = mysid
debug       = true

тогда в моем сайте код или класс, который должен сделать соединение

Zend_Registry::set("enviroment", "production");
$arr = parse_ini_file('myfilename.ini',true);
$options = Zend_Db_Dbname::get($arr);
$db = Zend_Db::factory('Oracle', $options);

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

Если вам нужна дополнительная помощь, просто спросите.

Другие вопросы по тегам