首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >实现图像视图数量的有效方法- PHP

实现图像视图数量的有效方法- PHP
EN

Stack Overflow用户
提问于 2011-02-18 17:29:22
回答 2查看 288关注 0票数 1

我已经创建了一个网站,用户可以上传图片,我想记录单个图片的总浏览量。

现在我对实现的想法是:

将访问者的in地址存储在会话fe中:

代码语言:javascript
复制
$key = "view_img_".$img->id;  
if(!isset($_SESSION[$key]))  
{  
   $_SESSION[$key] = array();  
}  

$visitorIpAddress = $_SERVER['REMOTE_ADDRESS'];  

$found = false;  

foreach($ip in $_SESSION[$key])  
{
   if($ip == $visitorIpAdress)  
   {  
      $found = true; //visitor has visited before in the livespan of this session  
      break;  
   }  
}  

if(!$found)  
{  
   //do sql update query for the number of views for this image  
   $sql = mysql_query("UPDATE ") //etc.  

   //Add this ip to the list in the session  
   $_SESSION[$key][] = $visitorIpAdress;  
}  

现在我的问题是:

我希望它在某个timelimit之后清除$_SESSION$key变量中访问者的it地址,以清除资源。

问题是:

大多数访问者可能只查看一次图像,当某个图像变旧时,它可能不再被访问,但会话仍将存在。

有没有一种方法可以定义特定$_SESSION变量的寿命,使其重置自身?(等于$_SESSION$key = null)

或者会有更好的方法来实现这一点呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-18 17:36:14

您通过会话方法计算的是独特视图的数量。如果你只想计算浏览量,不要花太多心思,只需运行如下查询:

代码语言:javascript
复制
UPDATE counttable SET Views = Views + 1 Where ImageID = 123

填充ImageID,就可以开始工作了。接吻。

票数 1
EN

Stack Overflow用户

发布于 2011-02-18 17:41:06

您似乎不太清楚PHP会话是如何工作的:

  • 每个会话对于每个用户都是单独的
  • 在用户方面,每个会话只存在到用户与网站一起工作。当浏览器关闭时,如果terminated.
  • Session设置中定义的会话生存期过期

,则会话cookie将被擦除,会话is terminated.

  • Session可能会更早终止

因此,如果您愿意在会话中存储多个视图,那么在这个特定时刻,您将只存储当前用户的视图。如果要存储访问总次数,则需要使用数据库或其他外部数据存储。例如,您的包含图像的表可能有views列,您可以在每次访问后递增该列:

代码语言:javascript
复制
UPDATE images SET views = views + 1 WHERE id = 123
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5039604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档