PHP日志 - mysql与文件对比

5

我正在为我的PHP网站设置用户操作日志记录。

您建议将记录存储在MySQL数据库中还是文本/日志文件中?

4个回答

5

根据你所需,我会说:

  • 如果你需要从日志中获取数据,则将其存储在MySQL中可能有所帮助
  • 如果你只需要拥有一些几乎不使用的数据(但在网站发生非法行为或类似情况时需要),则文件可能已经足够了

为了不使事情变得太慢,你还可以同时使用两者(我曾在一些流量较大的网站上使用过这种方法,在那里立即将数据存储在数据库中是不明智的):

  • 白天将日志存储在文件中
  • 每天一次(或每小时一次,你知道的),使用批处理程序解析这些文件,并将数据放入数据库中

这样,你就不会一直向数据库插入数据;并且你可以(只要过去了一天或一小时)执行所有需要的查询


1
根据您的应用程序设计,打开文件并写入内容可能并不比在已建立的连接上进行数据库查询更快。 - n3rd
确实;我猜也取决于数据库服务器的负载。 - Pascal MARTIN
我想补充一点,为了达到最佳效果,如果您的日志函数写入数据库,您真的应该有一个备用方案,以便在数据库连接失败时将日志写入平面文件。否则,您的网站/应用程序可能会崩溃,并且如果您唯一的日志记录在数据库中,而数据库又失败了,那么您将得不到任何信息。 - Luke Stevenson

1
我建议使用类似 Zend_Log 这样的东西来抽象出实际的“物理”日志记录。这样,如果您的情况由于某种原因发生变化,您可以随时轻松地更改后端。

0

我建议使用MySQL,因为这样可以更容易地在例如管理区域中查看日志。您还可以设置不同的标志,例如错误级别,并通过日志进行筛选以查找有趣的项目。此外,您还可以轻松地基于此数据构建统计功能,比日志文件更容易。

但我想这取决于您如何使用日志,以及由谁使用它们。原始日志文件有点极客:)


0

大多数日志分析工具需要原始日志文件进行解析。如果您只是查看日志本身,使用数据库可能更好(根据Pascal所说的条件)。但是,如果您计划进行一些真正的分析,使用日志文件会更容易。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接