【问题标题】:In Shiny app, how to refresh data from MySQL db every 10 minutes if any change occured在 Shiny 应用程序中,如果发生任何更改,如何每 10 分钟刷新一次 MySQL 数据库中的数据
【发布时间】:2017-05-16 09:30:37
【问题描述】:

我已经使用闪亮、闪亮的仪表板和 RMySQL 包制作了仪表板。 以下是我写的,以便在发生任何变化时每 10 分钟刷新一次数据。

在全球.R

con = dbConnect(MySQL(), host, user, pass, db)
check_func <- function() {dbGetQuery(con, check_query}
get_func <- function() {dbGetQuery(con, get_query}

在服务器.R

function(input, output, session) {
    # check every 10 minutes for any change
    data <- reactivePoll(10*60*1000, session, checkFunc = check_func, valueFunc = get_func) 
    session$onSessionEnded(function() {dbDisconnect(con)})

但是,上面的代码很少会从 check_func 生成损坏的连接句柄错误。

Warning: Error in .local: internal error in RS_DBI_getConnection: corrupt connection handle

我应该将 dbConnect 代码放在服务器函数中吗? 有更好的想法吗?

链接:using session$onsessionend to disconnect rshiny app from the mysql server

【问题讨论】:

    标签: mysql r shiny


    【解决方案1】:

    “pool”包就是答案:http://shiny.rstudio.com/articles/pool-basics.html

    这在连接到数据库时增加了一个新的抽象级别:您将创建一个引用该数据库的对象(称为池),而不是直接从数据库中获取连接。该池包含许多与数据库的连接。 ...每次进行查询时,都是在查询池,而不是数据库。 ...您永远不必直接创建或关闭连接:池知道何时应该增长、收缩或保持稳定。

    我从这里得到了答案。 -> https://stackoverflow.com/a/39661853/4672289

    【讨论】:

      猜你喜欢
      • 2020-04-26
      • 2022-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多