我正在创建一个在线多层GD图像创建工具。用户可以将新图像上传到服务器以添加到GD生成的图像。我希望能够在整个php会话期间存储gd图像和所有用户上传的文件。然后,用户可以选择将这些文件永久保存到他们的帐户,但默认行为是在会话到期后删除未使用的文件。
有没有人有我的探索指示?
由于
答案 0 :(得分:2)
我在这里看到了两种可能性。
设置custom session handler,它将定义垃圾收集功能以删除旧图像。
另一个简单的解决方案是使用CRON。您每10分钟运行一次并删除旧图像。
第一个解决方案的缺点是,有时用户将因为垃圾收集运行而获得更长的加载时间。
第二种解决方案的缺点是您可能无法在非专用服务器上访问它。
您也可以组合这两种解决方案。我可能会这样做。
答案 1 :(得分:1)
会话过期时,您不会收到通知。这恰好发生在后台。您可以做的是以某种常规间隔运行任务(比方说每小时)聊天检查临时目录中的所有文件,并删除在一定时间内未触及的所有文件。 filemtime()
是你的朋友。
答案 2 :(得分:0)
我知道这个问题已经很老了,但我现在正在开展一个类似的项目,并希望分享我的解决方案作为其他人的参考。
我所做的是上传图像,将其转换为base64( base64_encode()),然后将其保存在会话变量中,这样我就可以再次从磁盘中删除原始图像。
当你想用它进行GD操作时,你需要获取保存的会话数据,解码它( base64_decode())并创建一个图像对象( imagecreatefromstring()强>)
这只是一个简单的想法,它适用于我的应用......
抬头!
base64-data可以获得大量图像,Session-Memory(memory_limit)是页面上每个其他用户的共享空间。所以不要过度 - 因为如果很多人同时使用你的应用程序,你的memory_limit可能超过......