Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

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

[复制链接]
rikioy 发表于 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

查看全部评分

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-16 15:21 , Processed in 0.031126 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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