【发布时间】:2011-08-31 19:17:58
【问题描述】:
我目前正在尝试修复 issue in Drupal core's issue queue 与有人在执行搜索索引时访问站点时发生的超时有关,这是一个相当密集的写入操作,通常发生在调用 cron 命令时(所以它很可能发生在现场网站上,同时公众仍然可以访问)。它源于 SQLite 对写入的锁定,这通常不是问题,但在这种情况下,因为执行此索引会大大增加连接在等待锁定释放时超时的可能性。
答案似乎是增加驱动程序等待锁释放的时间。在 PHP 中,这应该可以通过将 PDO::ATTR_TIMEOUT 选项设置为等待锁定的秒数来实现。然而,这似乎并没有真正起作用。无论传递什么值,都会发生超时。但是,我找不到任何提及它在互联网上其他任何地方都不起作用的信息,所以只有我们吗?有没有其他人在尝试增加 SQLite 的超时时间时遇到问题?是否有其他方法可以避免此问题发生?
【问题讨论】:
-
对比留言簿/博客更复杂的网站使用 SQLite 并不是一个好主意。您应该转移到另一个数据库引擎或使用谷歌自定义搜索引擎进行网站搜索。
-
我没有与一个可以做出类似决定的网站合作。我正在尝试解决广泛使用的内容管理系统 Drupal 的核心问题。从系统中删除 SQLite 支持,或者告诉每个人使用 Google 来满足他们的搜索需求,既不可能也不切实际。并且为了记录,在很多情况下,SQLite 是一个非常好的站点选择;例如,获得大量匿名流量和/或托管在内存有限的 VPS 帐户上。
-
您找到解决方案了吗?我在使用 PHP5 和 SQlite3 时遇到了类似的问题。
-
不,抱歉。该错误仍然突出。 =/