是的,我有一个问题。
我有我的上传头像。
1)弹出一个窗口
2)上传图片
3)你裁剪它
4)点击finish,就会得到新的头像(原来上传的图片会被裁剪后的图片替换掉,所以原来的图片会被移除,不会占用任何空间)
现在,如果用户在2)之后取消或离开此过程,则原始完整大小的图像将保留在服务器上。我想好了,如果他关闭弹出窗口,警告他,然后删除图像呢?那么,如果用户的浏览器崩溃,离开网站,或其他奇怪的情况怎么办。这仍然会使它保留在服务器上。
那么我能为此做些什么呢?我想到了一个临时目录,在xx时间之后删除其中的所有内容,但是没有cronjob就可以做到这一点吗?对于我的问题,有没有比这更好的解决方案?
发布于 2010-10-28 22:59:43
有一个目录中的项目过期是正常和合理的,正是您所描述的情况。用户突然消失了,你不得不扔掉他们留下的垃圾。
你有某种会话密钥吗?您可以将垃圾收集与会话密钥何时过期绑定在一起。
发布于 2010-10-28 23:01:29
你不能依赖于在窗口关闭时运行脚本,因为尽管它可能对大多数用户有效,但在许多情况下,它最终会被忽略或诸如此类。
最好的解决方案是,正如您所说的cron作业。如果你在共享主机上,不能在服务器上设置一个,写一个PHP脚本,它将检查图像并删除任何超过几个小时的旧图像。
然后在您自己的计算机上或其他地方设置一个计划任务,以便定期打开该网页。(在Linux上,可以设置一个使用wget的cron作业。)
发布于 2010-10-28 23:02:39
这应该不是非常困难的。PHP将上传到临时目录,您必须将文件从临时位置移动到所需的目录中。因此,为了避免在该过程完成之前检查图像,请传递该变量,并且在该过程结束之前不要从temp目录中执行文件的最后移动。我个人喜欢在完成一个多步骤的过程后做所有的DB更新,等等,以防他们决定退出。
清理--可能--是一项繁重的工作。但老实说,即使是在大型网站上,我也没有遇到过这样的情况,如果需要的话,你不能偶尔手动完成。每周在一个网站上有超过1000名用户,我们从来没有遇到过头像的空间问题。
https://stackoverflow.com/questions/4044069
复制相似问题