2014-10-12 8 views
0

내 node.js 서버가 충돌하거나 중단 될 때마다 데이터베이스 업데이트 작업을 수행 할 수있는 방법이 있습니까? 자바에서 try{}catch(){}finally(){}처럼. 나는 여기 조금 초보자 다.Node.js 서버 크래시 처리

노드가 종료되기 전에 노드가 방출하는 이벤트가 있습니까? 그렇다면 거기에 내 기능을 쓸 수 있습니다.

나는 서버를 수동으로 중지하면 데이터베이스의 일부 필드를 업데이트해야한다. 처리되지 않은 크래시도 마찬가지입니다.

여기에 Node.js의 도메인 정보가 나와 있습니다. 하지만 도메인을 사용하여 전체 서버를 모니터링하는 방법을 모르겠습니다.

+0

자바 스크립트가'try' /'catch'을 시작하지만 당신은 정말 어떤 언어 처리 ** ** 충돌에 대한 것을 사용해서는 안된다. 이 질문을 확인하십시오 : http://stackoverflow.com/a/7313005/362536 또한, 커널이 어떤 이유로 (메모리 부족과 같은) 프로세스를 죽이는 이벤트에서 뭔가를하기를 원할 것입니다. . 이러한 경우 외부 프로세스를 모니터링해야합니다. – Brad

답변

1

이벤트는 노드 프로세스를 종료하려고 할 때 방출 :

process.on('exit', function(code) { 
    console.log('About to exit with code:', code); 
}); 

http://nodejs.org/api/process.html#process_event_exit

이 핸들러는 동기 조작 만 수행 할 수 있기 때문에 여기서 데이터베이스를 조회 할 수는 없습니다. 몇 가지 가능한 대안 : 앱이

  • 자동으로 프로세스를 재시작 한 다음 때마다 프로세스 데이터베이스 픽스 물건을 할 Upstart 같은 도구를 사용하여 충돌 할 때

    • 사용 database transactions은 그래서 당신은 "데이터베이스 그 갱신의 일"을 할 필요가 없습니다
  • +0

    안녕하세요, Emmett, 감사합니다! 하지만 그 출구는 해고되지 않습니다. 내가 서버를 막을 때. 샘플을 주시겠습니까? express.js 및 하위 프로세스도 사용하고 있습니다. – Sathish

    0

    노드 JS를 사용할 때 많은 수의 비동기 호출로 인해 try/catch를 사용하는 것은 바람직하지 않습니다. 여기에 가장 좋은 방법은이 찾을 수 있습니다, 좋은 설명을 "약속"검토 다음 링크를 사용 : https://www.promisejs.org/