Как мне реализовать регистратор заданий cron базы данных? - PullRequest
1 голос
/ 28 июня 2010

Я использую PHP и Oracle, при этом crontab выполняет сценарии PHP в назначенное время. Мое текущее решение для ведения журнала / аудита включает простые файлы журналов. Вместо этого я хотел бы сохранить свои журналы выполнения cron в базе данных.

Сейчас я пытаюсь спроектировать процесс так, чтобы при запуске задания cron я создавал запись в таблице CronExecution. Затем каждый раз, когда я хочу что-то записать для этого cron, я помещаю запись в таблицу CronEvent, которая будет иметь внешний ключ к таблице CronExecution.

Я планирую регистрировать все события, используя PRAGMA AUTONOMOUS pl / sql процедуру. С помощью этой процедуры я смогу последовательно регистрировать события внутри других процедур pl / sql, а также из своего PHP-кода.

Чтобы сделать его более надежным, я планирую использовать запасной вариант для регистрации ошибок в файле в случае сбоя вызовов журнала базы данных.

Кто-нибудь еще написал что-то подобное? Какие у вас есть предложения, основанные на вашем опыте?

Ответы [ 2 ]

1 голос
/ 28 июня 2010

Да, я делал это несколько раз.

Таблица CronExecution - хорошая идея. Однако я не знаю, что вам действительно нужно создать таблицу CronEvent. Вместо этого просто укажите себе столбец «status» и обновите этот столбец.

Вы обнаружите, что это значительно упрощает переход на файл. Когда вы создадите много таких CronExecutions, у вас, вероятно, будет меньше интереса к CronEvents и больше интереса к полному статусу исполнения.

Обернуть все вызовы обновления в хранимых процедурах. Вы определенно правильно поняли.

Включение «расписания» в ваш CronExecution окажется полезным. Очень легко иметь много заданий cron и не иметь возможности соединить точки на «сколько времени это заняло?» и «когда это должно выполняться» . Включение «следующего запланированного запуска» по завершении работы значительно облегчит вашу жизнь.

0 голосов
/ 29 июня 2010

Вам захочется прочитать документацию по DBMS_SCHEDULER.Это небольшая работа для реализации (что не так?), Но она позволит вам контролировать запланированные и одноразовые задания из базы данных.Это включает в себя задания на уровне ОС.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...