登录PHP Webapp

时间:2020-03-05 18:45:25  来源:igfitidea点击:

我想保留人们在我的应用程序中所做的某些事情的日志,以便在需要时可以撤消。

最好将这样的日志存储在文件或者数据库中吗?关于它的优缺点,我完全不知所措,只不过它是另一个需要设置的表。

我是否不知道应该研究并了解的第三(或者第四等)选项?

解决方案

回答

我只是为了维护性而使用数据库,而且对文件的多次编辑可能会导致一些遗漏。

回答

我们几乎肯定会希望使用数据库来进行灵活的基于记录的访问,并利用数据库处理并发数据访问的能力。如果我们需要跟踪可能需要撤消的信息,则采用结构化格式将是一个好处,并且具有更新行的能力,该行指示何时和由谁撤消了给定交易。

我们可能只想在性能非常高的情况下,或者每条记录的结构化数据或者数据量非常大,而这些数据可能毫无疑问地存储在数据库中时,才想写入文件。请注意,除非应用程序具有大量事务,否则数据库速度不太可能成为问题。还要注意,如果我们正在处理文件,则需要非常小心地处理并发访问(读/写/锁定),这可能不是我们要处理的。

回答

我将同时考虑以上两个建议,并补充说,当用户很多时,将文件锁定在平面文件日志上可能会导致问题。

回答

看看我以前的线程留下数据库应用程序审计跟踪/更改历史记录的好策略吗?它似乎涵盖了同一主题。

回答

至少有一个确定的理由要存储在数据库中。我们可以在MySQL中使用INSERT DELAYED(或者在其他数据库中使用类似的构造),然后立即返回。使用这些查询不会从数据库中获得任何返回数据,因此不能保证将它们应用。

通过使用INSERT DELAYED,我们不会因为日志记录而使应用程序变慢。数据库可以随时将INSERT写入磁盘,因此可以将一堆插入捆绑在一起。

我们需要注意使用MySQL的内置时间戳功能(例如CURRENT_TIMESTAMP或者CUR_DATE()),因为只要实际执行查询,它们就会被调用。因此,我们应确保任何时间都以编程语言而不是数据库生成数据。 (本段可能是特定于MySQL的)

回答

我找到了这篇文章:http://www.devshed.com/c/a/PHP/Logging-With-PHP/

回答

我是log4php的忠实粉丝。它为我们提供了记录操作的标准界面。它基于log4j。该库加载中央配置文件,因此我们无需更改代码即可更改日志记录。它还提供了几个日志目标,例如文件,系统日志,数据库等。