Использование 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);
Используя этот метод, я считаю чрезвычайно полезным и быстрым создание новых классов / страниц / приложений и позволяет очень быстро переключаться между серверами разработки и производства.
Если вам нужна дополнительная помощь, просто спросите.