在我们的应用程序中,用户可以上传照片。此上传事件注册为事件并推送到用户的“关注者”事件流中。
使用的流程和技术如下:
- 用于存储的 MYSQL 后端(上传图像的 URL 与一些元数据一起存储在 photos 表中)
- 事件生成并存储在 MYSQL 的事件表中
- GEARMAN 作业已创建,该作业将事件 ID 发送到 REDIS,其中该事件 ID 被扇出到所有用户关注者,以便填充他们的事件流。
- 我们通过从 REDIS 获取事件 ID 数组,然后在 MYSQL 中执行简单的 IN 查询来检索流。
- 在用户事件流中,可以看到图像的小裁剪版本。
现在这一切都运行得非常好,并且与多个缓存层一起帮助保持系统非常稳定和可扩展。
但是,对于选择删除一张或多张照片的用户来说,什么是最好的处理方式。目前,当他们删除照片时,所有关注者都会在其事件流中收到损坏的图像链接。
因此我们需要在两种处理方法之间进行选择。
- 将 Activity ID 存储在照片表中,并在用户删除该照片时删除与该照片相关的 Activity。这会很好地工作,但偶尔会看到用户的事件从他们的信息流中删除。
- 在照片表中将图像标记为已删除,并在生成流时显示“此图像已被用户删除”消息。
哪种方法被认为是最好的方法?为什么?或者人们会推荐其他更好的方法来处理这个问题吗?
非常感谢。
最佳答案
IMO 最好使其尽可能透明。告诉其他用户该图像已被删除,并提供从事件流中删除该条目的选项。这样用户就可以保持控制并且不会在后台发生“魔法”。也许对于非常旧的条目(无论这在当前意味着什么),您可以自动删除该项目。但我总是更愿意获得相应的信息。
关于php - 如何处理事件流中已删除的照片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15292236/