R中的多个(同时)用户可以访问MySQL数据库
我有一个闪亮的应用程序(托管在shinyapps.io上),它记录了用户对MySQL数据库的某些操作按钮的点击。我想从以下几方面得到一些建议:R中的多个(同时)用户可以访问MySQL数据库,mysql,r,shiny,Mysql,R,Shiny,我有一个闪亮的应用程序(托管在shinyapps.io上),它记录了用户对MySQL数据库的某些操作按钮的点击。我想从以下几方面得到一些建议: 在哪里放置dbConnect代码(即shinyServer功能的内部或外部) 何时关闭连接(因为我遇到了打开的连接太多的问题) 向数据库中添加的每个元素只会添加一个新行,因此用户不会访问和修改相同的元素。我问这个问题的原因是,我遇到了多个用户无法同时使用该应用程序的问题(错误为“断开与服务器的连接”),我不确定它是否来自MySQL连接 谢谢大家! 评
- 在哪里放置
代码(即dbConnect
功能的内部或外部)shinyServer
- 何时关闭连接(因为我遇到了打开的连接太多的问题)
谢谢大家! 评论中有人发布了关于
pool
软件包的评论,该软件包正是为了达到这个目的!以下是我的server.R
code的相关部分:
library(shiny)
library(RMySQL)
library(pool)
pool <- dbPool(
drv = RMySQL::MySQL(),
user='username',
password='password',
dbname='words',
host='blahblahblah')
shinyServer(function(input, output) {
## function to write to databse
writeToDB <- function(word, vote){
query <- paste("INSERT INTO word_votes (vote, word) VALUES (", vote, ", '", word, "');", sep="")
conn <- poolCheckout(pool)
dbSendQuery(conn, query)
conn <- poolReturn(conn)
## rest of code
}
库(闪亮)
图书馆(RMySQL)
图书馆(泳池)
你是在shinyapps.io上托管你的应用程序还是在你自己的Shinny服务器上(开源版还是专业版)?我托管了几个应用程序供我的实验室使用。为了防止打开的连接过多,我在每次启动操作时都会打开一个新连接,并尽快将其关闭。换句话说,对于每个操作按钮,事件观察者将打开一个新的数据库连接,运行必要的查询,然后关闭连接。它可能有助于开发一个功能,您可以将其用作建立连接的捷径。根据我的经验,最好为每个查询打开然后关闭一个新连接(就像您所做的那样)。我尝试打开一个连接,然后用会话$onSessionEnded
关闭它。问题是我们使用的数据库有一个可以同时完成的连接限制。有多少用户?事件发生的频率如何?在打开和关闭连接时会有开销