【问题标题】:Handling files for multiple users at once (logistic prob)一次处理多个用户的文件(逻辑问题)
【发布时间】:2014-10-17 19:25:57
【问题描述】:

嘿,我的应用程序会在服务器上创建文件,这些文件会立即在名为 iframe 的 html 元素中显示给用户。 到目前为止,我一直将所有文件存储到同一个文件夹中,每次用户请求新文件时都会覆盖旧文件。问题是,如果多个用户尝试一次生成文件,其中一个可能无法获得正确的文件,或者根本没有文件。我想我应该为每一代文件创建随机临时文件夹。这会起作用,但我的服务器可能会在大约 100 代文件中很快被填满。一旦用户在 iframe 中加载文件,我需要删除这个随机临时文件夹,但是如何在加载时调用 php 函数?
任何其他替代方法/想法都会对我有很大帮助。其他人如何处理此类问题?

【问题讨论】:

  • 你是说如果有人上传了名为“myfile.jpg”的文件,而其他人上传了同名文件,它会覆盖它吗?当你说“..其中一个可能没有得到正确的文件,或者根本没有文件”时,这就是你的意思吗?
  • 这就是为什么大多数人会同时存储文件的默认名称和一些散列名称的原因。这可能类似于md5(date('Y-m-d H:i:s')) 然后将其设为实际文件名,这样就不会有任何重复文件
  • @Rasclatt 我的脚本为每个用户生成具有相同名称的文件。我可以对每个文件进行不同的命名或将其放入单独的临时文件夹中,但是我需要一个好的方法来摆脱这些临时文件,否则它们可能会耗尽我服务器上的所有空间......
  • 我认为您应该按照@SuperDJ 的建议上传文件。可能会进一步修改,例如:md5(date('Y-m-d H:i:s').$_SESSION['username']) 或其他人在同一秒上传的机会...
  • @Rasclatt 好的,但是一旦用户在浏览器中看到该文件,我该如何删除它。文件不再对任何人有用,它正在占用服务器空间

标签: php html pdf iframe


【解决方案1】:

我会创建一个临时文件夹,并生成随机文件名(md5、GUID,没关系)。
在文件夹上生成文件以进行可视化的同一脚本,在生成本身之前,应检查文件夹上的所有文件,不包括 >= 1 天前生成的所有文件。

如果您对如何获取文件创建/修改日期有任何疑问,请查看filemtime functionthis question

【讨论】:

  • 感谢 m8 gr8 的想法。实际上 10 分钟的文件寿命应该足够了,因为我需要节省脚本运行时间。一天之内,我可以获得数千个文件,每个文件只有几 mb。
  • 如果你的脚本的性能是一个关键点,你也可以制作另一个脚本来清理旧文件,并使用 linux crontab(或 windows 任务调度程序)每隔几分钟调用一次。
猜你喜欢
  • 2019-09-18
  • 1970-01-01
  • 1970-01-01
  • 2019-06-18
  • 2015-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多