English 中文(简体)
登录PHP Web应用程序[关闭]
原标题:
  • 时间:2008-08-30 13:08:07
  •  标签:
Closed. This question needs to be more focused. It is not currently accepting answers.

想改进这个问题吗 通过编辑此文章来更新问题,使其只关注一个问题。

Closed 3 years ago.

我想记录人们在我的应用程序中所做的一些事情,在某些情况下,这样在需要时可以撤消。

最好将此类日志存储在文件或数据库中吗?除了这是另一张需要设置的桌子之外,我完全不知道利弊。

是否有第三个(或第四个等)选项是我不知道的,我应该研究和学习?

最佳回答

几乎可以肯定的是,您希望使用数据库进行灵活的、基于记录的访问,并利用数据库处理并发数据访问的能力。如果您需要跟踪可能需要撤消的信息,那么以结构化格式保存它是一个好处,因为它能够更新一行,指示给定事务何时以及由谁撤消也是一个好处。

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

问题回答

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

通过使用INSERT DELAYED,您不会因为日志记录而使应用程序的速度减慢太多。数据库可以随时自由地将INSERT写入磁盘,因此它可以将一堆插入捆绑在一起。

您需要注意使用MySQL内置的时间戳函数(如CURRENT_timestamp或CUR_DATE()),因为无论何时实际执行查询,都会调用它们。因此,您应该确保任何时间数据都是用编程语言生成的,而不是由数据库生成的。(这段话可能是MySQL特有的)

我是log4php。它为您提供了一个标准的日志操作接口。它基于log4j。该库加载一个中央配置文件,因此您永远不需要更改代码来更改日志记录。它还提供了几个日志目标,如文件、系统日志、数据库等。

我使用数据库只是为了维护——对一个文件进行多次编辑也可能会导致遗漏一些内容。

我将对上述两个建议进行补充,并补充说,当用户很多时,平面文件日志上的文件锁定可能会导致问题。





相关问题
热门标签