PHP-记录用户活动并将其显示在不同页面上的最佳方式?

PHP-记录用户活动并将其显示在不同页面上的最佳方式?,php,mysql,logging,text-files,Php,Mysql,Logging,Text Files,我已将我的网站用户活动记录到一个.txt文件中。我想能够在我的管理区在单独的页面显示这些结果。所以第一页显示了1-50个结果,以此类推 但我的问题是它在.txt文件中是这样设置的 用户:Admin IP地址:xx.xxx.xxx.xx 主机地址:XXXXXXXXXX 日期和时间:2010年9月20日星期一上午11:44:18 网址: 浏览器:Mozilla/5.0(Macintosh;U;英特尔Mac OS X 10_6_3;en-US)AppleWebKit/534.3(KHTML,类似Gec

我已将我的网站用户活动记录到一个.txt文件中。我想能够在我的管理区在单独的页面显示这些结果。所以第一页显示了1-50个结果,以此类推

但我的问题是它在.txt文件中是这样设置的

用户:Admin
IP地址:xx.xxx.xxx.xx
主机地址:XXXXXXXXXX
日期和时间:2010年9月20日星期一上午11:44:18
网址:
浏览器:Mozilla/5.0(Macintosh;U;英特尔Mac OS X 10_6_3;en-US)AppleWebKit/534.3(KHTML,类似Gecko)Chrome/6.0.472.62 Safari/534.3
参考URL:

每组信息之间有七行的间隔。我想把它放到一个MySQL表中,但随着时间的推移,它不会变得很大吗


感谢您的帮助

如果它变大了怎么办?这就是数据库的用途

让我向您保证,从长远来看,建立数据库和表的[一次性]成本将远低于维护自制(如自定义格式)数据文件的成本

如果您想通过IP地址1.2.3.4了解2010-09-25和-26之间发生的事情,该怎么办?你打算写一个函数吗?(这是SQL中的一条语句。)是否要扫描整个文件?(适当的DBMS将只使用索引。MySQL将至少使用一个索引。)


我有点倾向于说“两种方法都试一下,看看DB方法如何在长期内获胜”,因为优点太多了,无法列举

如果它变大了怎么办?这就是数据库的用途

让我向您保证,从长远来看,建立数据库和表的[一次性]成本将远低于维护自制(如自定义格式)数据文件的成本

如果您想通过IP地址1.2.3.4了解2010-09-25和-26之间发生的事情,该怎么办?你打算写一个函数吗?(这是SQL中的一条语句。)是否要扫描整个文件?(适当的DBMS将只使用索引。MySQL将至少使用一个索引。)


我有点倾向于说“两种方法都试一下,看看DB方法如何在长期内获胜”,因为优点太多了,无法列举

如果您要查询数据库表,而不仅仅是查看某个监视器中的日志(例如unix tail),那么它似乎更适合这种情况

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

另一个选择是,如果您真的需要所有日志,甚至是旧的日志,则使用date分区,但这有点高级


坦率地说,假设您设置了正确的索引,在您注意到性能下降之前,行数应该达到数千万。

如果您要查询数据库表,而不仅仅是查看某些监视器(例如unix tail)中的日志,那么数据库表似乎更适合这样做

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

另一个选择是,如果您真的需要所有日志,甚至是旧的日志,则使用date分区,但这有点高级


坦率地说,假设您设置了正确的索引,那么在您注意到性能下降之前,行数应该达到数千万。

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


我通常的经验法则是,对于任何多达10000行的表和简单的查询,您甚至不需要过多地考虑数据访问路径或其他任何内容。在10000到100万行范围内,我会非常注意确保表被正确索引,超过100万行可能需要更多高级管理技术来保持可接受的性能(尽管对于简单的日志表来说,这不太成问题)。

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


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

回答得好。DB选项还减少了大量开销—您不需要为每个条目重复所有的“用户:”和“主机地址:”等标题—您只需为每个条目设置字段并用数据填充即可。Lucanos,是的,这正是所需的,越简单越好!谢谢回答得好。DB选项还减少了大量开销—您不需要为每个条目重复所有的“用户:”和“主机地址:”等标题—您只需为每个条目设置字段并用数据填充即可。Lucanos,是的,这正是所需的,越简单越好!谢谢哦,谢谢,这就是我现在所做的,将日志迁移到mysql数据库使查询变得越来越简单和快速。哦,谢谢,这就是我现在所做的,将日志迁移到mysql数据库使查询变得越来越简单和快速。这叫cron作业吗?如果是这样,您如何制作/设置一个?@hart1994在unix系统上是的,一个cron作业。这看起来像是一个完整的教程:。您将计划一个CLI模式的PHP脚本,一个