2014-07-16 2 views
1

나는 반짝이는 응용 프로그램을 사용하여 데이터베이스와 다른 구성 요소에 대한 연결을 만들고 있습니다. 앱 연결이 끊어지면 연결을 종료하고 싶습니다. 반짝이는 앱이 닫힐 때 함수를 실행하는 방법이 있습니까?서버 프로세스를 닫을 때 함수를 호출하는 방법이 있습니까?

+0

'? on.exit'을 살펴보십시오. 도움이 될 것입니다. – Andrie

+1

'반짝 반짝 빛나는'최신판'세션'에 문서화 된'session $ onSessionEnded'를 보라 – jdharrison

답변

3

@jdharrison의 의견에서 언급했듯이 반짝이는 서버에서는 $ onSessionEnded 세션을 사용할 수 있습니다.

이 간단한 예제는 응용 프로그램을 닫을 때 콘솔에 메시지를 인쇄하지만 해당 print 문을 데이터베이스 연결을 닫는 일부 명령문으로 바꿀 수 있습니다.

library(shiny) 
ui <- fluidPage(
    #Empty UI 
) 

server <- function(input, output,session) { 

    session$onSessionEnded(function() { 
    print('hello, the session has ended') 
    }) 
} 


shinyApp(ui = ui, server = server) 
+0

완벽하게 설명했다. 감사합니다 – IndranilGayen

+0

그것은 나를 도왔습니다 훌륭한 대답! –

1

이전되었습니다로서 당신은 session$onSessionEnded를 사용하여 세션의 결론에서 작업을 수행 할 수 있습니다 말했다. 이 방법은 각 사용자 세션마다 하나의 데이터베이스 연결을 만들지 만 여러 사용자간에 하나의 데이터베이스 연결을 공유하는 경우에 유용합니다. 이 경우 서버 기능이 종료 될 때 실행 코드가 필요합니다. 이것은 onStop() 기능 (https://shiny.rstudio.com/reference/shiny/latest/onStop.html)을 사용하여 수행 할 수 있습니다. 문서의 예제 :

library(shiny) 
shinyApp(
    ui = basicPage("onStop demo"), 

    server = function(input, output, session) { 
    onStop(function() cat("Session stopped\n")) 
    }, 

    onStart = function() { 
    cat("Doing application setup\n") 

    onStop(function() { 
     cat("Doing application cleanup\n") 
    }) 
    } 
)