zoukankan      html  css  js  c++  java
  • Discuz X2 数据库备份功能分析

    今天由于需要一个不使用mysqldump的数据库导出功能,就翻了下DX2的实现,想模仿大牛的做法自己处理。

    废话少说。直接上图看流程。

    首先是找到实现此功能的源码。我来到了创始人的数据库功能。

    然后,很明显,功能在DiscuzX2_SC_UTF8\source\admincp文件夹,根据action参数可知,对应的文件是admincp_db.php

    有点汗。。。。。这个文件里面存在很多不属于函数的行。。。。直接搜索export

    哈,找到了。第42行。。。。

    44行这个if是神马??看了下里面的功能,基本上都是拼接html。那可以推测是自定义备份或者其他选项功能的显示了。这次不需要看这个功能。。。直接跳过。。。

    直接来到else,第194行,可以找到sqldumptablestruct,第200行,sqldumptable。从名字可以推测是模拟sqldump功能的两个函数了。直接搜索。找到了这个函数,sqldumptablestruct1032行,该函数首先通过SHOW CREATE TABLE 语句获取表的结构。这个SHOW CREATE TABLE语句能够生成创建本表的sql

     后面的语句便是将表的各种属性,包括自增列、表引擎、字符集等设置生成为sql语句,与SHOW CREATE TABLE生成的语句一起拼接为sql脚本使用的完整结构。

    1076行是sqldumptable函数。这个函数首先使用SHOW FULL COLUMNS FROM获取各个字段。然后。。。其实最悲催的在1104行。。。。

    数据竟然是使用select * from这一最常用的语句从数据库读出的。然后后面的我想不分析大家也知道是怎么做了。。。。

    就写到这里吧。。。。写某教授的作业去,我可不想挂他的课。。。。。

     

    这个内容同步发在bbs.phpchina.com了http://bbs.phpchina.com/forum.php?mod=viewthread&tid=229189

  • 相关阅读:
    Unity3d:Unknown type 'System.Collections.Generic.CollectionDebuggerView'1
    Unity3d:The requested item has been unloaded
    installshield 注册dll
    sql查找字符串是否包含字符
    asp获取勾选checkbox的值
    Pyqt5.2.1生成的.ui文件转换成.py
    scrapy爬虫的编写步骤
    IBM MQ 集成CXF 发送JMS 消息
    io输出流变为输入流
    hibernate flush clear的区别
  • 原文地址:https://www.cnblogs.com/sztsian/p/2305350.html
Copyright © 2011-2022 走看看