2011-05-05 3 views

답변

4

예를 들어 cron을 사용하고 node.js 앱을 예약 된 작업으로 실행할 수 있습니다.

편집 : 프로그램이 계속 실행해야 할 경우

, 그때 아마의 setTimeout은 (구현이 매우 간단합니다) 몇 가지 가능한 선택 중 하나입니다. 그렇지 않으면 데이터를 일부 임시 저장 시스템 (예 : redis)으로 오프로드하여 정기적으로 다른 node.js 프로그램을 실행하여 데이터를 이동할 수 있지만 다른 DB 시스템에 대한 새로운 종속성이 생기고 시나리오에 따라 복잡성이 증가 할 수 있습니다. Redis는 또한 주 node.js 앱이 예기치 않게 종료되고 데이터 배치의 일부 또는 전부를 잃어 버리는 경우를 대비하여 어떤 종류의 오류 방지 솔루션으로도 사용할 수 있습니다.

+0

문제는 라이브 데이터를 집계하기 때문에 내 앱이 계속 실행되어야한다는 것입니다. 그래서 나는 지난 시간에 수집 된 데이터를 쓰는 방법을 알아야합니다. – Pono

+0

@ 포노 : 답변이 업데이트되었습니다. – yojimbo87

0

curl 요청으로 데이터베이스 쓰기를 트리거하는 이유는 무엇입니까? 매시간 cron 작업에 명령을 입력하고 로컬 포트에서 수신 할 수 있습니다.

1

시간당 한 번이 아니라 실시간으로 집계해야합니다.

버디 미디어 (BuddyMedia)의 프리젠 테이션을 통해 실시간 집계를 어떻게 진행하는지 확인할 수 있습니다. 나는 실시간 메트릭스에 대해이 접근 방식의 수정 된 버전을 사용하고 있으며 멋지게 작동합니다.

http://www.slideshare.net/pstokes2/social-analytics-with-mongodb

0

당신은 몽고 저장소 당신이 데이터를 복사하고 요청이 당신을 제공 할 때마다 당신이 마지막으로 데이터를 복사하기 때문에이되었습니다 시간을 확인할 수있는 마지막 시간을 가질 수 있습니다.

또는 1 분에 1 회 확인을 위해 setInterval (checkRestore, 60000)을 시도해 볼 수 있습니다. checkRestore()는 서버에 쿼리하여 마지막으로 업데이트 된 시간이 한 시간 이상 경과했는지 확인합니다. 이를 수행 할 수있는 몇 가지 방법이 있습니다.

날짜를 저장하는 가장 쉬운 방법은 Date.now() (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date)의 값으로 저장 한 다음 db.logs.find ({lastUpdate : {$ lt : Date.now() - 6000000}})와 같은 것입니다.

나는 거기에 몇 가지 다른 솔루션을 혼동하지만, 잘하면 그게 뭔가 효과가있을 것 같아!

0

노드를 사용하는 경우 멋진 CRON과 유사한 도구는 Forever입니다. 동일한 CRON 패턴을 사용하여 반복되는 작업을 처리합니다.

관련 문제