2015-05-23 52 views
2

所以我有一些需要页面浏览的配置文件页面。我将查看数据存储在mysql和php中(实际上是laravel)。基本思想是每次访问配置文件时都将视图加1。PHP的Mysql:避免浏览量溢出?

基本思路是在个人资料页中添加PHP代码,像

$page->view += 1; $page->save(); 

但是,如果用户点击F5几次呢?它会导致查询运行很多,我担心它最终会减慢应用程序。

我正在考虑用js进行提示,当用户点击f5和ajax调用来添加视图时。但我想知道是否有更好的解决方案(比如,YouTube的观点是如何的)?

+0

请注意,内联代码跨度('like this')[不应该用于突出显示](http://meta.stackoverflow.com/q/254990),仅适用于句子中的代码。谢谢! –

回答

0

您可以在页面上经过一段时间后计算视图。

要做到这一点,你需要像延迟javascript函数:

setTimeout(function(){countView()},3000);(3秒延迟)

countView()应该是一个AJAX调用运行$page->view += 1; $page->save();

而且由于功能Ajax调用是异步的,执行不会延迟您的应用程序流,尽管页面视图表上的简单增量不会对性能造成太大伤害

+0

这个问题指出PHP。此外,这将无法正常工作,因为它们仍然可以刷新很多次,除非它们需要等待3秒钟。更多的时间会锁定页面。 – Brian

+0

你错过了什么“异步”的部分?它不会锁定页面。 –

+0

大声笑,等等等等?你生气吗?不要采取这个人,我们只是讨论编程的人。 :)我的主要观点是,他们可以在不久之后增加网页总数。 – Brian

0

只要用户不删除cookie,这将工作。

if ($_COOKIE['returning']!="yes") 
{ 
    // first visit! 
} 
setcookie("returning", "yes", time()+360000); 

另一种方法是将IP登录到数据库中,检查用户是否已经访问过,但代码比我现在可以发布的更复杂。如果接受,我将在稍后编辑帖子。

+0

你确实意识到OP没有说明登录用户(不同用户名)的任何内容,并且你的代码会阻止多个用户的视图增加。当访问第一个配置文件时,会设置$ _COOKIE ['username']',但是它也会阻止其他配置文件上的增量。 –

+0

是的。我明白了。 “用户名”关键字可以是任何东西。 – Brian