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.net/manual/en/function.sqlite-busy-timeout.php),PHP 将数据库打开时的默认繁忙超时设置为 60 秒。
但是,这在 v3 中不会发生,必须手动完成。

我个人的经验是,当您必须执行连续的读/写提交并且文件长时间未被访问时,SQLite3 的默认值 0 不够。
To Top