PHP - 记录用户活动并在不同页面上显示它们的最佳方法?

时间:2010-09-25 09:35:56

标签: php mysql logging text-files

我的网站登录用户活动已经成为.txt文件。我希望能够在单独的页面中在我的管理区域中显示这些结果。因此,第一页显示1-50个结果,依此类推。

但我遇到的问题是它在.txt文件中的设置如下

User: Admin IP Address: xx.xxx.xxx.xx Host Address: xxxxxxxxxxxxxxxx Date And Time: Monday 20th of September 2010 11:44:18 AM URL: http://colemansystems.psm2.co.uk/ Browser: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.62 Safari/534.3 Refering URL:

每组信息之间有七行间隙。我正在考虑将它放入MySQL表中,但随着时间的推移不会变得非常大吗?

感谢任何帮助!

3 个答案:

答案 0 :(得分:4)

那么如果变大呢?这就是数据库的用途。

让我向您保证,设置数据库和表格的[一次性]成本远远低于长期维护自制程序(如自定义格式)数据文件。

如果您想通过IP地址1.2.3.4了解2010-09-25和-26之间发生了什么?你打算写一个函数吗? (这是SQL中的单个语句。)您要扫描整个文件吗? (正确的DBMS将只使用索引.MySQL将使用至少一个索引。)

我倾向于说“尝试两者并看看数据库方法从长远来看如何获胜”因为这些优势太多而无法列出。

答案 1 :(得分:0)

如果你要查询数据库表似乎更适合这个,而不是仅仅查看某个监视器中的日志(例如unix tail)。

随着时间的推移会变得非常大,这就是为什么你可以通过删除旧条目来修剪它,如果你注意到性能下降。您可以在表格上设置一个脚本,该脚本在比1个月更早的所有条目上运行DELETE查询。然后,您可以安排该脚本每天运行。

另一种选择是在日期使用分区,如果你真的需要所有日志甚至更旧的日志,但这有点先进。

坦率地说,假设您设置了正确的索引,在您发现性能下降之前,行数应该输入数千万。

答案 2 :(得分:0)

任何现代数据库(包括MySQL)都会在合理的时间内处理正确索引的表上的查询,其中包含数千万行。这就是他们

我通常的经验法则是,对于任何最多10,000行的表和简单的查询,您甚至不需要过多考虑数据访问路径或其他任何内容。在10,000到100万行范围内,我会非常注意确保表格被正确编入索引,超过一百万行,然后可能需要更多先进的管理技术来保持性能可接受(尽管对于简单的日志表,这将是少了一个问题)。