Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何创建(可配置)数量的临时下载链接_Php_Mysql - Fatal编程技术网

Php 如何创建(可配置)数量的临时下载链接

Php 如何创建(可配置)数量的临时下载链接,php,mysql,Php,Mysql,我正在创建一个只能运行10次的下载链接。所以我有两个选择 下载文件并将其计数更新到数据库并删除文件 当计数为10时 或者下载文件并重命名为filename-1, filename-2………filename-10。。并在到达时将其删除 filename-10 我猜第二个选项不调用数据库使用更少的资源。现在查找文件名的简单方法是什么。例如: 我所有的文件名都是唯一的,比如sadkjsah78876djhgsadj.jpg。所以当我更新count时 sadkjsah78876djhgsadj-1.

我正在创建一个只能运行10次的下载链接。所以我有两个选择

  • 下载文件并将其计数更新到数据库并删除文件 当计数为10时
  • 或者下载文件并重命名为filename-1, filename-2………filename-10。。并在到达时将其删除 filename-10
我猜第二个选项不调用数据库使用更少的资源。现在查找文件名的简单方法是什么。例如:

我所有的文件名都是唯一的,比如sadkjsah78876djhgsadj.jpg。所以当我更新count时

sadkjsah78876djhgsadj-1.jpg
(or)
sadkjsah78876djhgsadj-8.jpg

因此,如何在目录中找到基于sadkjsah78876djhgsadj的文件名。我正在考虑循环。但我认为当我将下载限制设置为100时,这不是最好的方法。

最好的选择是使用
.htaccess
mod_rewite
将对某个目录的调用重写为PHP文件。e、 g.对
/downloads/FILEHASH.jpg
的任何调用都会被重写为
/download.php?file=FILEHASH

然后,
download.php
将检查
FILEHASH
是否与数据库中的一行匹配,并且dl计数是否在
x
下,如果是,它将增加dl计数,将响应代码设置为
200
,内容类型设置为
image/jpeg
,并触发图像数据(存储在文件系统中或数据库中的BLOB中)

如果未找到或dl计数超过
x
,它会将响应代码设置为
404
(如果您愿意,也可以设置更合适的代码)或者什么也不返回,或者可能是一条有用的消息。根据文件的数量,您可能还应该从数据库中删除该行,并在此时取消文件与文件系统的链接

如果您使用MVC框架,这种事情非常简单


如果您提供的不仅仅是图像,请确保在添加上载时获得上载的mime类型,将其保存在数据库中,并在下载时将其作为内容类型。

我肯定会选择数据库选项。它在许多级别上都更好。但会生成数百万个下载文件。。而且我还必须创建cron jobs删除这些列表..更新数据库中的数百万行比动态重命名数百万个文件要好得多。这就是数据库的用途。如果设置正确,就不会出现负载问题。哦,好吧,我将使用数据库而不是:)干杯-祝你好运。)