PHP Conference Japan 2024

oci_set_prefetch_lob

(PHP 8.2, PECL OCI8 >= 3.2)

oci_set_prefetch_lob設定每個 CLOB 或 BLOB 預先擷取的資料量。

說明

oci_set_prefetch_lob(資源 $statement, 整數 $prefetch_lob_size): 布林值

設定用於擷取每個 CLOB 或 BLOB 值的內部緩衝區大小。當執行成功的 oci_execute() 查詢呼叫後,實作從資料庫取得內部 Oracle LOB 定位器時,以及後續每次向資料庫發送內部擷取請求時,都會使用此緩衝區大小。增加此值可以減少 PHP 與資料庫之間的往返次數,從而提高擷取較小 LOB 的效能。記憶體用量將會改變。

此值會影響以 OCILob 實例形式返回的 LOB,以及使用 OCI_RETURN_LOBS 返回的 LOB。

請在呼叫 oci_execute() 之前呼叫 oci_set_prefetch_lob()。如果未呼叫此函式,則會使用 oci8.prefetch_lob_size 的值。

LOB 預取值僅應在 Oracle Database 12.2 或更高版本中設定。

參數

statement

oci_parse() 建立並由 oci_execute() 執行的有效 OCI8 陳述式識別碼,或 REF CURSOR 陳述式識別碼。

prefetch_lob_size

要預取的每個 LOB 的位元組數,>= 0

傳回值

成功時傳回 true,失敗時傳回 false

範例

範例 #1 變更查詢的 LOB 預取值

<?php

$conn
= oci_connect('hr', 'welcome', 'localhost/XE');

$stid = oci_parse($conn, 'SELECT myclob FROM mytable');
oci_set_prefetch_lob($stid, 100000); // 在呼叫 oci_execute() 之前設定
oci_execute($stid);

echo
"<table border='1'>\n";
while (
$row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS+OCI_RETURN_LOBS)) {
echo
"<tr>\n";
foreach (
$row as $item) {
echo
" <td>".($item !== null ? htmlentities($item, ENT_QUOTES) : "&nbsp;")."</td>\n";
}
echo
"</tr>\n";
}
echo
"</table>\n";

oci_free_statement($stid);
oci_close($conn);

?>

另請參閱

新增註解

使用者貢獻的註解

此頁面沒有使用者貢獻的註解。
To Top