2010-06-28 3 views
1

PHP와 Oracle을 사용하며 crontab은 예정된 시간에 PHP 스크립트를 실행합니다. 현재의 로깅/감사 솔루션에는 간단한 로그 파일이 포함됩니다. 내 cron 실행 로그를 대신 데이터베이스에 저장하고 싶습니다.데이터베이스 크론 작업 로거는 어떻게 구현해야합니까?

지금은 cron 작업이 시작될 때 CronExecution 테이블에 레코드를 만들도록 프로세스를 설계하려고합니다. 그런 다음 그 cron에 대해 무언가를 기록하기를 원할 때마다 표에 CronExecution 표에 외래 키가있는 기록을 넣을 것입니다.

PRAGMA AUTONOMOUS pl/sql 프로 시저를 사용하여 모든 이벤트를 기록 할 계획입니다. 이 절차를 통해 다른 pl/sql 프로 시저 내부의 이벤트와 일관된 방식으로 PHP 코드에서 이벤트를 기록 할 수 있습니다.

더 강력하게 만들기 위해 데이터베이스 로그 호출이 실패한 경우 파일에 오류를 기록하도록 폴백해야합니다.

다른 사람이 비슷한 것을 썼습니까? 당신의 경험에 근거하여 어떤 제안을 했습니까?

답변

1

네, 여러 번했습니다.

표는 CronExecution입니다. 그러나, 당신이 정말로 CronEvent 테이블을 만들 필요가 있는지 모르겠습니다. 대신 자신에게 "상태"열을주고 해당 열을 업데이트하십시오.

파일을 훨씬 쉽게 손쉽게 만들 수 있습니다. 이 두 가지를 많이 만들면 CronEvents에 관심이 줄어들고 전체 실행 상태에 더 많은 관심을 가질 수 있습니다.

저장 프로 시저에서 모든 업데이트 호출을 줄 바꿈하십시오. 당신은 분명히 맞습니다.

CronExecution에 '일정'을 포함하면 편리합니다. 크론 작업을 많이하고 도트를 연결할 수없는 것은 매우 쉽습니다. "얼마나 걸렸습니까?""실행시기는"입니다. 작업 완료시 "다음 예정 실행"을 포함하면 훨씬 쉽게 작업을 수행 할 수 있습니다.

+0

작업을 진행하면서 각 메시지를 추가하는 CLOB 열을 제안 하시겠습니까? 그리고 나서 마지막으로 완료 또는 무언가로 상태를 설정합니다. CLOB에서 전체 실행 로그를 검색 할 수 있습니까? 데이터베이스에서 일종의 일정 등록 정보를 가지고 있다는 생각을 읽었습니다. 저는 Quartz for Java를 사용했으며, 좋아했습니다. 그러나 PHP를 사용하면서 crontab에서 얼마나 많은 기능을 대신 할 수 있는지 잘 모르겠습니다. 그러나 정보 필드에 시작/중지/다음 실행 세부 정보를 추가하는 것은 좋은 생각입니다. 감사! –

+0

CLOB, VARCHAR (MAX), DB에있는 모든 것. 내 경험으로, 나는 거의 'CronEvent' 레벨에서 아무것도 필요로하지 않았다. 각 로그 메시지의 시작 부분에 시간을 인쇄하면됩니다. 이제 DB에 구성 할 필요는 없지만 "CronLog"를 볼 코드 작성을 시작할 때 가장 궁금한 질문은 "X가 언제 마지막으로 실행되었는지, 얼마나 오랜 시간이 걸렸습니까? 다시 실행 " –

0

DBMS_SCHEDULER에 대한 설명서를 읽는 것이 좋습니다. 구현하는 데 약간의 작업이 있지만, 데이터베이스 내에서 예정된 일회성 작업을 제어 할 수 있습니다. 여기에는 OS 수준의 작업이 포함됩니다.

관련 문제