微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

避免使用PHP / PDO锁定SQLite数据库超时

我目前正在尝试修复issue in Drupal core’s issue queue,这与某人在执行搜索索引时访问网站时发生的超时有关,该操作通常是在调用cron命令时发生的,相当耗写的操作(因此很可能会发生仍然可以让公众访问).它源于sqlite的写锁定,通常这不是问题,但在这种情况下,因为进行此索引操作极大地增加了连接在等待释放锁时超时的可能性.

答案似乎是增加驱动程序等待锁定释放的时间.在PHP中,可以通过将PDO :: ATTR_TIMEOUT选项设置为等待锁定的秒数来实现.但是,这似乎并不实际.不管发生什么值,超时都会发生.我找不到关于它在互联网上其他任何地方都无法使用的任何提及,那是我们吗?还有其他人在尝试增加sqlite的超时时间时遇到麻烦吗?也许还有其他方法可以避免此问题的发生吗?

解决方法:

我设法通过使用

PRAGMA temp_store=MEMORY; PRAGMA journal_mode=MEMORY; 

并在编写时使用事务.它不会完全解决它,但是它将使您的写入快得多,特别是如果它是一堆同时完成的更新/插入.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐