控制社区站点上的图像带宽问题

时间:2010-01-14 21:58:32

标签: php .htaccess bandwidth

我正在开发一个社区照片共享网站,我需要一些控制带宽的方法。例如,我想设置允许的最大带宽,可以是图像大小 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 = {{ 3}}),图像没有加载(好),但是 php文件没有加载到它的位置

我该如何解决?

由于

如果有人有兴趣,这有用(尽管可能会有所改进):

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

如果你看一下image.php正在接收的$ _GET变量,你可能会想出从那里做什么。

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

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