1

Zend 1.1 アプリケーションを使用していますが、運用ローカル ネットワークに移行すると非常に遅くなりました。アプリケーションは仮想サーバーでホストされ、OCI と Instant Client を介して、同じネットワーク上の離れた Oracle スキーマに接続します。

この遅延の背後にあるアプリケーション固有の理由を回避するために、次のように、DB テーブルに接続してデータを取得する小さなスクリプトを作成しました。

<?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>";


?>

このスクリプトの 2 つのコピーを異なる構成で使用すると、速度が約 40 倍異なることがわかります。スクリプトが Oracle Express のローカル インスタンスに接続されている場合は約 0.1 秒かかりますが、離れた DB で実行される場合は 4.3 秒以上かかります。

この問題を解決する説明または方法があれば、私は感謝します。ドライバーがOCiの代わりに使用する他のオプションは何ですか。これはテストする価値があります。

4

0 に答える 0