我正在开发一个社区照片共享网站,我需要一些控制带宽的方法。例如,我想设置允许的最大带宽,可以是图像大小 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变量,你可能会想出从那里做什么。
答案 0 :(得分:3)
我假设您正在保留图像数据库和详细信息。你能否将请求存储到数据库中的图像?如果某一天的请求数超过 n ,则拒绝该图像。
走这条路线意味着你必须通过PHP脚本提供所有图像,而不是让人们直接访问图像本身。使用带有apache的mod_rewrite,您可以将images/001830.jpg
的所有请求重写为images/serve.php?id=001830
,这样您就可以对存储的数据执行检查,以确定是输出实际图像,还是通用的“带宽超出”图像取而代之。
答案 1 :(得分:0)
在数据库中保留一个计数器并在每次用户查看图像时为其添加1,您还可以对日期和时间进行排序,如果最后一个视图是在前一天将计数器重置为1.