我使用PHP和Oracle,crontab在预定时间执行PHP脚本。我当前的日志/审计解决方案涉及简单的日志文件。我想将我的cron执行日志保存到数据库中。
现在我正在尝试设计进程,以便在cron作业启动时,我在CronExecution
表中创建一条记录。然后,每次我想为该cron记录一些内容时,我都会在CronEvent
表中放置一条记录,该表将有CronExecution
表的外键。
我计划使用PRAGMA AUTONOMOUS
pl / sql过程记录所有事件。通过这个过程,我将能够以一致的方式记录其他pl / sql过程中的事件以及我的PHP代码。
为了使其更强大,我的计划是在数据库日志调用失败的情况下将错误记录到文件中。
有没有人写过类似的东西?根据您的经验,您有什么建议?
答案 0 :(得分:1)
CronExecution
表是个好主意。但是,我不知道你真的需要创建CronEvent
表。相反,只需给自己一个“状态”列并更新该列。
你会发现让故障转移更容易。当你构建大量这些CronExecutions
时,你可能对CronEvents
不太感兴趣,并且对执行的完整状态更感兴趣。
在存储过程中包装所有更新调用。你肯定有正确的。
在CronExecution
中加入“时间表”非常方便。很容易有很多cron工作而且无法连接点“这需要多长时间?”和“这应该什么时候运行” 。在完成工作时加入“下一次预定运行”将使您的生活更轻松。
答案 1 :(得分:0)
您需要阅读有关DBMS_SCHEDULER的文档。 实现(不是什么?)是一项工作,但它允许您从数据库中控制计划和一次性作业。这包括操作系统级别的工作。