php - 加载页面时间过长 - 分析系统

标签 php jquery mysql sql database

我想向您征求与我自己的分析系统相关的建议。 到目前为止,我的系统收集所有点击并将它们保存在 SQL 数据库中。

分析的第一部分。

SQL 数据库日志如下所示:

+----+----------------------+-------------+---------------------------------------------+----------------+--------------+----------+
| id | time                 | address     | address_to                                  | ip             | resolution   | id_guest |
|----+----------------------+-------------+---------------------------------------------+----------------+--------------+----------|
| 1  | 2013-12-03#14:31:35  | index.php   | https://www.youtube.com/watch?v=6VJBBUqr1wM | 89.XX.XXX.6    | 1366x768     | 6        |
| 2  | 2013-12-03#14:48:21  | file.php    | https://www.youtube.com/watch?v=0EWbonj7f18 | 89.XX.XXX.6    | 1366x768     | 6        |
| 3  | 2013-12-03#16:16:55  | contact.php | https://www.youtube.com/watch?v=_o-XIryB2gg | 178.XX.XXX.140 | 1920x1080    | 11       |
| 4  | 2013-12-03#16:21:32  | index.php   | https://www.youtube.com/watch?v=z0M96LyTyX4 | 178.XX.XXX.140 | 1920x1080    | 11       |
| 5  | 2013-12-03#16:44:32  | movies.php  | https://www.youtube.com/watch?v=cUhPA5qIxDQ | 178.XX.XXX.140 | 1920x1080    | 11       |
+----+----------------------+-------------+---------------------------------------------+----------------+--------------+----------+

每次点击都会作为新记录添加到数据库中。

我网站上的所有电影都在 SQL 数据库的第二个表中(电影):

+----+----------------------+-------------+---------------------+
| id | name                 | address     | tags                |
|----+----------------------+-------------+---------------------|
| 1  | 2013-12-03#14:31:35  | 6VJBBUqr1wM | bass,electro,trance |
| 2  | 2013-12-03#14:48:21  | 0EWbonj7f18 | electro,house,new   |
| 3  | 2013-12-03#16:16:55  | _o-XIryB2gg | electro,party,set   |
| 4  | 2013-12-03#16:21:32  | z0M96LyTyX4 | trance,house,new    |
| 5  | 2013-12-03#16:44:32  | cUhPA5qIxDQ | techno,new,set      |
+----+----------------------+-------------+---------------------+

一切都完美无缺。在数据库中我有用户观看的所有电影,我想精确定义它们,所以记下 IP + 分辨率。

第一个问题: 这是确定用户的好方法吗?

--

分析的第二部分。

现在我想将收集的日志和基于浏览 Material 的电影显示界面一起使用。 我为进入网站的用户从数据库中选择所有日志。 我从日志中选择标识符 film 并在表 components 中扫描它以获取日志并将其放入数组中。例如,ID = 6 的用户将有一个数组:

array(
    [0] = > bass,
    [1] = > electro,
    [2] = > trance,
    [3] = > electro,
    [4] = > house,
    [5] = > new
);

现在我将按照最常出现的顺序对数组的内容进行排序:

array(
    [2] = > electro,
    [1] = > bass,
    [1] = > trance,
    [1] = > house,
    [1] = > new
);

根据数组的内容可以向用户展示他可能感兴趣的视频。

一切都很完美,但我现在才发现的问题...... 在表 logs 中,我有超过 450 万条记录。可想而知,搜索如此大量的记录需要花费大量时间,有时进入站点长达10秒...

我希望我糟糕的英语还算清楚。

请提供有关如何解决加载页面问题的任何建议。

最佳答案

  1. 在需要的地方使用索引,很难准确地说出在哪里 - 你没有显示任何查询 - 基本上你希望在查询的 WHERE 部分和 JOINS 中有索引列。您不必为大部分时间保持不变的列编制索引 - isloggedin、isadmin、语言等等

  2. 为您需要搜索的数据制作搜索表 - 例如,如果您需要了解首选分辨率或用户访问网站的次数,您可以制作一个 cron 作业来为所有用户解析这些数据并存储它在搜索表中。如果需要,这也可以用于进行一些统计。对于这些标签,您可以使用包含 user_idtagcount

  3. 的表格
  4. 如果您只需要上次访问的网站、上次的分辨率...只需为此制作一个表格,您可以在其中为每个用户存储和更新一行

关于php - 加载页面时间过长 - 分析系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23736019/

相关文章:

php - 具有全局权限的数据库用户无权访问新创建的数据库

php - 根据持续时间设置 div 宽度和填充

javascript - 使用 jQuery 以像素为单位的填充或边距值作为整数

javascript - 为导航栏元素创建 "tuck in"效果

带有面向对象 PHP 的 PHP 购物车

php - 转义字符串以在 preg_ 正则表达式中使用

php - 同一页上有两个具有不同 css 的打印按钮......可能吗?

javascript - 尝试将数据推送到 JSON 数组

mysql - 将一个表复制到另一个表但保留相同的自动递增键

mysql - 每当包含的值为 NULL 时,SQL 查询为 SUM(expression) 返回 NULL