Discuz! 官方站

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 15342|回复: 5

DIY模板保存后空白的数据挽救与原理

[复制链接]
发表于 2011-6-29 18:17:56 | 显示全部楼层 |阅读模式
本帖最后由 rikioy 于 2011-6-29 18:19 编辑

保存流程:
前台JS -> post布局数据(xml)格式给后台程序->一系列处理->save_diy_data()函数进行存储

在这个流程中,出现点击保存后,模板数据丢失的情况主要原因是 浏览器post给后台的XML数据里,布局数据为空。最终导致了这个空的xml经过处理在数据库中替换掉了原有的数据。

挽救办法,一旦出现这种情况后,再次进入DIY页面。选择 保存 按钮旁边的 恢复备份即可恢复这次保存前的数据。

原理:
在save_diy_data()中函数接收到整理好的数据,首先进行空值判断和是否是数组判断。为假的话退出函数。(布局数据已经被由xml转换成了数组)
然后读取此页的默认模板,对此页默认模板进行处理,把传进来的布局数据分插到默认模板中。

然后判断一下是不是保存的临时文件,如果是的话,那DIY的模板名就加上 _diy_preview.htm 后缀,如果不是保存的缓存,则用当前的模板名。

最终此文件保存在 /data/diy/ 目录中,如果目录中已经有同名的文件(上一次保存DIY模板的时候保存下来的)就把这个文件加上.bak保存在同目录。ps.这个文件很重要,也就是你恢复数据所需要的数据。

经历过以上步骤之后,如果没有出现文件读写问题,最后把模板数据序列化一下插入在 common_diy_data 表格中。注意这里用的是替换插入,如果是同名的模板文件,则就替换掉了。这也就是为什么传进来的模板数据是空的布局。也就在这里替换掉了。

恢复,系统提供的恢复备份功能也就是利用上面 data/diy 文件夹中的.bak 文件进行数据恢复。




评分

1

查看全部评分

发表于 2011-6-29 20:06:01 | 显示全部楼层
老大沒解決方法喔~
回复

使用道具 举报

发表于 2011-6-30 12:00:01 | 显示全部楼层
支持!
回复

使用道具 举报

发表于 2011-7-1 01:04:18 | 显示全部楼层
支持下
回复

使用道具 举报

发表于 2011-7-5 17:43:01 | 显示全部楼层
支持
回复

使用道具 举报

发表于 2011-10-26 14:32:08 | 显示全部楼层
好贴!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|Comsenz ( 粤B2-20090059-165 )star

GMT+8, 2019-10-14 06:29

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表