Очень медленное подключение к удаленной базе данных Oracle с использованием OCI и мгновенного клиента

У меня есть приложение Zend 1.1, которое стало очень медленным при переносе в рабочую локальную сеть. Приложение размещается на виртуальном сервере и через OCI и Instant Client подключается к удаленной схеме Oracle в той же сети.

Чтобы избежать каких-либо особых причин, обусловливающих эту задержку, я создал небольшой скрипт, который подключается и извлекает данные из таблицы БД, как показано ниже:

<?php
$username = "Username";
$password = "Password";
$dbname = "(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST =     localhost)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SID = xe) ) )";

$conn = oci_connect($username, $password, $dbname);

$query = 'select * from SCS_SYS_ROLES';
$stid = oci_parse($conn, $query);
$r = oci_execute($stid);

// Fetch each row in an associative array
print '<table border="1">';
while ($row = oci_fetch_array($stid, OCI_RETURN_NULLS+OCI_ASSOC)) {
print '<tr>';
foreach ($row as $item) {
print '<td>'.($item !== null ? htmlentities($item, ENT_QUOTES) : '&nbsp').'</td>';
}
print '</tr>';
}
print '</table>';
// Close the Oracle connection
oci_close($conn);

// Measuring time...
$time = microtime(true) - $_SERVER["REQUEST_TIME_FLOAT"];
echo "<p>".$time."</p>";


?>

Две копии этого скрипта с различной конфигурацией показывают разницу в скорости примерно в 40 раз. Когда скрипт подключен к локальному экземпляру Oracle Express, он занимает около 0,1 секунды, а при запуске на удаленной БД — более 4,3 секунды.

Если у кого-то есть объяснение или способ решить эту проблему, я буду благодарен. Какие есть другие варианты использования драйверов вместо OCi, это стоит проверить.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]