Heim >Backend-Entwicklung >PHP-Tutorial >求一个 删除帖子的 合理思路

求一个 删除帖子的 合理思路

WBOY
WBOYOriginal
2016-07-06 13:53:481009Durchsuche

比如我程序要提供删除帖子功能
帖子里面包含了(图片,文字,还有帖子的评论)
我原本思路就是一个函数先删除图片 文字 然后评论
然而这样一个函数的代码非常长,差不多有100多行,而且后面维护起来也难,一堆if else看得我自己都头晕。并且如果中间有一个地方执行出错就麻烦了,我删除图片的时候是调用七牛接口删除,所以也不排除网络故障的可能

所以希望大神提供一个设计思路,方便后期的维护并且能完美的解决意外的发生

回复内容:

比如我程序要提供删除帖子功能
帖子里面包含了(图片,文字,还有帖子的评论)
我原本思路就是一个函数先删除图片 文字 然后评论
然而这样一个函数的代码非常长,差不多有100多行,而且后面维护起来也难,一堆if else看得我自己都头晕。并且如果中间有一个地方执行出错就麻烦了,我删除图片的时候是调用七牛接口删除,所以也不排除网络故障的可能

所以希望大神提供一个设计思路,方便后期的维护并且能完美的解决意外的发生

如果帖子包含图片,文字,评论等等相关信息。
那么如果要删除它们的时候必定是要写上 delete图片,delete文字,delete评论 的相关sql语句的,这是无法避免的。
那么剩下的问题就是如何拓展与维护此类功能了:我强烈推荐写一个观察者模式,当删除帖子操作触发时就顺带触发删除图片,文字,评论的相关操作。这样子即易于拓展又方便维护了,毕竟一个方法对应一个方法,不用写那么多if判断。

小tips:最好不要使用事务,帖子这些不是敏感信息,所以就算删除过程中出现错误也不会有什么影响(无非就是数据库信息会变得混乱与不完整),加快速度才是最重要的

可以给帖子设置一个状态 显示 隐藏 删除

删除的时候只设置成删除状态 前台不显示

然后放一个定时执行脚本 再去彻底删除状态为删除的帖子

现在删除都是在做逻辑删除,为啥要做物理删除?

其实7牛的稳定性很不错的,几乎不用太担心网络问题,当然你也可以为这些文件所在的表增加一个deleted字段,开始删除的时候本地将其变成1,然后远端删除后回调函数真正删除,否则等待定时任务对deleted=1的数据进行二次清理。
至于文字、评论等等,其实它们最好使用外键关联你的帖子,这样直接级联删除了,不需要任何额外的处理。或者ORM类的框架在声明model的时候可以指明依赖关系,自动完成级联删除,反正手工处理实在是太不理想了。

这个在前端实现有点麻烦,尤其是在使用第三方接口的时候,得我们手动调用多个删除方法,如果再遇上批量删除那叫一个酸爽。
后来我索性不删了,反正也不是多大的文件。

数据不要删除,。。不要删除

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn