我目前正在尝试解决一个issue in Drupal core's issue queue问题,当有人访问网站时,他们正在执行搜索索引,这是一个相当写密集的操作,通常发生在调用一个cron命令(所以它很可能发生在一个现场,同时仍然可以被公众访问)。它起源于SQLite对写操作的锁定,这通常不是问题,但在这种情况下,因为执行此索引会极大地增加连接在等待锁释放时超时的可能性。使用PHP/PDO避免锁定的SQLite数据库超时
答案似乎是增加驱动程序等待锁释放的时间量。在PHP中,这应该可以通过将PDO::ATTR_TIMEOUT
选项设置为等待锁定的秒数来实现。但是,这似乎并不实际;无论传递什么值,超时都会发生。但是,我找不到任何提及它不能在互联网上的任何其他地方工作,但是,它只是我们吗?有没有其他人遇到麻烦试图增加SQLite的超时时间?是否有其他方式可以避免这个问题的发生?
使用SQLite的网站比留言簿更复杂/博客是不是一个好理念。你应该移动到另一个数据库引擎或使用谷歌自定义搜索引擎进行网站搜索。 – Zyava 2011-05-24 10:20:22
我没有为一个单一的网站工作,我可以做出这样的决定。我试图解决一个广泛使用的内容管理系统Drupal的核心问题。从系统中删除SQLite支持,或告诉每个人使用Google来满足他们的搜索需求,这两者都是不可能的,也是不切实际的。并且为了记录,SQLite对于站点来说是很好的选择。例如,获得大量匿名流量和/或托管在内存有限的VPS帐户上。 – 2011-05-26 10:48:12
你有没有找到这个解决方案?我遇到与PHP5和SQlite3类似的问题。 – Jonathan 2011-12-13 10:33:20