2016-12-09 4 views
0

Azure의 Ubuntu VM에서 실행되는 Shiny Server가 있습니다.반짝이는 서버 - 앱이로드 될 때마다 실행되는 대신 mysql 쿼리를 예약 하시겠습니까?

server.R에서 매일 mysql 쿼리를 예약하는 방법은 무엇입니까? 앱을 방문 할 때마다 어떻게 실행하지 않습니까? 여기

내 server.R 및 ui.R의 샘플입니다 :

server.R

library(shiny) 
library(RMySQL) 
library(ggplot2) 
#library(ggiraph) 
library(lubridate) 

##Connect to Redmine db 
con <- dbConnect(MySQL(), 
       user = '#', 
       password = '#', 
       host = '#', 
       dbname='#') 

tickets<-dbGetQuery(con, "Select * from table") 
issues_speed_unique<-unique(na.omit(dbGetQuery(con,"Select * from table2"))) 
dbDisconnect (con) 

some aggregations.... 

shinyServer(
    function(input,output){ 

ui.R

library(shiny) 
library(ggplot2) 
#library(ggiraph) 
#library(htmltools) 
library(lubridate) 

shinyUI(fluidPage( 
+0

시스템 날짜로 명명 된 캐시 파일에서 데이터를 읽으려고 시도 할 수 있습니다. 존재하지 않으면 쿼리에서 데이터를 만듭니다. 그러나 그날의 첫 번째 사용자는 느려질 것입니다. – HubertL

+0

감사합니다 @HubertL, 좋은 소리. 나는 캐시 파일을 만드는 방법을 찾고 있었지만, 그것을 이해하는 방법에 대한 힌트는 찾지 못했다. 뭔가 제안 해 주시겠습니까? – adlisval

답변

0

이 함께 server.R 코드를 시작 바꾸기 code I found there의 적응 :

filename <- paste0(Sys.Date(),'.RData') 
if (!file.exists(filename)){ 
    # don't have a cached copy so run the query 
    library(RMySQL) 
    con <- dbConnect(MySQL(), 
        user = '#', 
        password = '#', 
        host = '#', 
        dbname='#') 

    tickets<-dbGetQuery(con, "Select * from table") 
    issues_speed_unique<-unique(na.omit(dbGetQuery(con,"Select * from table2"))) 
    dbDisconnect (con) 

    # save the query results for the future 
    save(list=c('tickets', 'issues_speed_unique'), file=filename) 
    rm(list=c('tickets', 'issues_speed_unique')) 
} 
load(file=filename)