PHP Conference Japan 2024

SQLite3::busyTimeout

(PHP 5 >= 5.3.3, PHP 7, PHP 8)

SQLite3::busyTimeout設定忙碌連線處理器

說明

public SQLite3::busyTimeout(int $milliseconds): bool

設定一個忙碌處理器,它會休眠直到資料庫未鎖定或達到逾時。

參數

毫秒 (milliseconds)

休眠毫秒數。將此值設定為小於或等於零的值,將關閉已設定的逾時處理器。

回傳值

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

新增註解

使用者貢獻的註解 3 則註解

ppryor63 at gmail dot com
10 年前
busyTimeout() 方法和相關的 API sqlite3_busy_timeout() 是一個連線層級的屬性,會影響整個連線,並且應該在開啟連線後設定一次。不要設定為零,否則在呼叫 query、querySingle、prepare 或 execute 方法時會遇到「資料庫忙碌」錯誤訊息。還要確保 sqlite3 函式庫是在定義了 HAVE_USLEEP 的情況下編譯的,否則 busyTimeout() 只能以秒為單位逾時。強烈建議在並行環境中以非零逾時呼叫 busyTimeout() 以確保可靠性。
anthony at domps dot fr
3 年前
可以使用 PRAGMA 設定 busyTimeout(毫秒)

<?php

$db
= new SQLite3('my.db');
$db->exec("PRAGMA busy_timeout=5000");

?>
dkarnout at gmail dot com
9 年前
對於 SQLite2 (https://php.dev.org.tw/manual/en/function.sqlite-busy-timeout.php),PHP 在開啟資料庫時將預設忙碌逾時設定為 60 秒。
然而,v3 並非如此,必須手動完成。

我的個人經驗是,當您必須執行連續的讀/寫提交且檔案長時間未被存取時,SQLite3 的預設值 0 是不夠的。
To Top