0

我正在开发一个社区照片共享网站,我需要一些控制带宽的方法。例如,我想设置允许的最大带宽,可以是图像大小x图像被查看的次数。类似于像 photobucket 这样的网站所做的(当他们用超出带宽的图像替换图像时)。

我想知道最好的解决方案是什么。如何跟踪查看图像的次数?也许我需要使用 Google Analytics 之类的东西,然后每隔一段时间运行一个 cron 作业,看看是否有任何图像超过了带宽限制?我认为这可能是矫枉过正,我在想这个问题。

顺便说一句,我正在使用 PHP 进行开发。

有任何想法吗?

谢谢!

更新

好的,所以看起来 mod-rewrite 是要走的路。现在我在.htaccess中有以下代码:

RewriteEngine on
RewriteRule .*.(gif|jpg|jpeg|png)$ /include/image.php

当我转到实际图像(即http://...picture.jpeg)时,PHP 页面 image.php 会加载,但是当图像位于 img 标签中时(即 img src= http://... picture.jpeg),图像没有加载(好),但是php 文件没有加载到它的位置

我如何解决它?

谢谢

解决方案

如果有人感兴趣,这很有效(尽管它可能会得到改进):

RewriteEngine on
RewriteRule (.*).(jpg|jpeg|gif|png|wbmp)$ /include/image.php?location=$1&format=$2 [NC,L]

如果您查看 $_GET 变量 image.php 正在接收,您可能会从那里弄清楚要做什么。

4

2 回答 2

3

我假设您正在保留图像和详细信息的数据库。您不能在数据库中存储对图像的请求吗?如果某天的请求数超过n,则拒绝该图像。

走这条路意味着您必须通过 PHP 脚本提供所有图像,而不是让人们直接访问图像本身。将 mod_rewrite 与 apache 一起使用,您可以重写所有请求,images/001830.jpgimages/serve.php?id=001830允许您对存储的数据执行检查,以确定您输出的是真实图像,还是通用的“超出带宽”图像。

于 2010-01-14T22:02:51.673 回答
0

在您的数据库中保留一个计数器,并在每次用户查看图像时向其添加 1,您还可以对日期和时间进行排序,如果最后一次查看是前一天,则将计数器重置为 1。

于 2010-01-14T22:03:09.867 回答