【问题标题】:PHP - Best way to log user activity and display them on different pages?PHP - 记录用户活动并将其显示在不同页面上的最佳方式?
【发布时间】:2010-09-25 09:35:56
【问题描述】:

我已将我的网站登录用户活动保存到 .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: @987654321@ 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 表中,但随着时间的推移,它不会变得非常大吗?

感谢任何帮助!

【问题讨论】:

    标签: php mysql logging text-files


    【解决方案1】:

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

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

    如果您想通过 IP 地址 1.2.3.4 了解 2010 年 9 月 25 日到 -26 年间发生的事情怎么办?你会写一个函数吗? (这是 SQL 中的一条语句。)您要扫描整个文件吗? (正确的 DBMS 将只使用索引。MySQL 将使用至少一个索引。)

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

    【讨论】:

    • 好答案。 DB 选项还减少了很多开销 - 您无需为每个条目重复所有“用户:”、“主机地址:”等标题 - 您只需为每个条目设置字段并填写它们有数据。
    • Lucanos,是的,这正是我们所需要的,越简单越好!谢谢!
    【解决方案2】:

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

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

    如果您确实需要所有日志甚至更旧的日志,另一种选择是使用日期分区,但这有点高级。

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

    【讨论】:

    • 这叫做 cron 作业吗?如果是这样,你如何制作/设置一个?
    • @hart1994 在 unix 系统上是的,一个 cron 作业。这看起来像是一个详尽的教程:cyberciti.biz/faq/…。您将安排一个 CLI 模式 PHP 脚本,您将在终端本身中运行该脚本以对其进行测试。
    • 好的,谢谢,什么是 CLI?抱歉,我不知道有关服务器的负载。那我可以在里面输入 PHP 吗?
    • @hart1994 哦,对不起,是的,CLI 只是命令行界面——基本上是命令行上的 PHP,而不是通过 Web 浏览器。这是常规的 PHP 代码,但您应该注意一些环境变量,例如$_SERVER。对于您连接mysql和运行查询的需要,我认为您不会遇到任何麻烦。如果你想了解更多,articles.sitepoint.com/article/php-command-line-1 看起来很透彻
    • 好的,非常感谢您的帮助!我会时不时地看一下并运行它。所以我只是在我的 cPanel 上进入“Cron Jobs”?
    【解决方案3】:

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

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

    【讨论】:

    • 哦,谢谢,这就是我现在正在做的事情,将日志迁移到 mysql 数据库,它使查询变得更容易和更快。
    猜你喜欢
    • 2011-06-15
    • 1970-01-01
    • 2019-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-03
    • 1970-01-01
    相关资源
    最近更新 更多