【发布时间】:2016-11-08 08:48:25
【问题描述】:
我有一个 Shiny 应用程序(托管在 shinyapps.io 上),它将用户对某些 actionButtons 的点击记录到 MySQL 数据库中。我想对一些事情提出一些建议:
-
dbConnect代码的放置位置(即shinyServer函数的内部或外部) - 何时关闭连接(因为我遇到了打开连接过多的问题)
对数据库的每次添加只会添加一个新行,因此用户不会访问和修改相同的元素。我问这个的原因是我遇到了多个用户无法同时使用该应用程序的问题(错误“与服务器断开连接”),我不确定它是否来自 MySQL 连接。
谢谢!
【问题讨论】:
-
您是在shinyapps.io 还是您自己的Shiny Server(开源版或专业版)上托管您的应用程序?
-
我托管了几个应用程序供我的实验室使用。为了防止打开的连接过多,我每次启动操作时都会打开一个新连接,并尽快关闭它。换句话说,对于每个动作按钮,事件观察者都会打开一个新的数据库连接,运行必要的查询,然后关闭连接。开发一个可以用作建立联系的捷径的功能可能会有所帮助。
-
根据我的经验,最好为每个查询打开然后关闭一个新连接(就像你做的那样)。我试过打开一个连接并用
session$onSessionEnded关闭它。问题在于我们使用的数据库有一个可以同时完成的连接限制。 -
有多少用户?事件多久发生一次?打开和关闭连接会有开销