我正在开发一个拥有如此多视频的网站。现在我遇到了如何制作自己的视频观看计数器的问题。我知道一个简单的方法:
UPDATE view_counter_table SET counter = counter + 1 WHERE video_id = ‘$video_id’;
但问题是我不认为这是为我的网站制作视图计数器的有效方法。因为假设视频被观看了50K次,同时有很多视频人以相同的速率观看,这意味着有如此多的更新说明。这可能是系统过载和带宽开销的原因。此外,这可能导致我的网站崩溃(在极端情况下)。
现在,我想要建议,是使用更新指令的有效方法(上面给出)还是有一些其他方法来创建一个可以减少开销的视图计数器。 (例如, 9gag.tv 使用它自己的视频查看计数器,看起来它的视图计数器效率更高,速度更快)。
答案 0 :(得分:0)
在迭代计数器时,它们有很多方法可以减少服务器负载。在我的例子中,我将给出2个各自的优势。
<强> 1 强> 例如,您可以创建第二个表来暂时保持增加的视图值。然后,该表将使用名为“memory”的数据库引擎。然后,将此表中存储的所有信息保存在服务器内存中,直到系统关闭。
然后,您将创建计划任务或crontab,它将按您选择的时间间隔运行,让我们说每小时。
此计划任务将执行一个脚本,该脚本会立即将所有视图复制到相应的视频中,不要忘记在此之后清除临时表。
<强> 2 强> 而不是写入数据库只需写入服务器上的文件。然后使用计划任务或crontab从此文件中读取值并将其添加到数据库中。不要忘记之后清除文本文件。
<强>差异:强> 第一个解决方案减少了磁盘IO,因为它会阻止读取和写入磁盘,但它仍然会使用MySQL语句,从而加载MySQL服务器。
第二种解决方案将减少MySQL服务器负载,但会增加磁盘IO。如果正确完成两个解决方案,将减少服务器负载。