繁体   English   中英

使用 PHP 从 MediaWiki 数据库中提取压缩文本

[英]Extract compressed text from MediaWiki database with PHP

我们的一个客户想要拥有他们运行一段时间的 wiki 站点的所有内容。 他们为我们提供了“mediawiki”软件的完整数据库。 我们正在尝试使用 php 从“文本”表中提取文章,而不使用 MediaWiki 引擎。

MediaWiki 似乎在将内容作为 BLOB 放入数据库之前对其进行了压缩。 如果没有引擎,我们找不到提取它的方法。 我查看了源代码,但无法重新创建它们提取 BLOB 的方式。

任何建议如何解决这个问题?

文本表

old_flags

逗号分隔的标志列表。 包含以下可能的值:

\n ┌──────────┬──────────────────────────────────────── ──────────────────────────────┐\n │ gzip │ 文本被PHP 的gzdeflate() 函数压缩。  \n │ │注意:如果打开了 $wgCompressRevisions 选项,新行 │\n │ │(=当前版本)将在保存时透明压缩。  \n │ │ 以前的修订也可以使用脚本进行压缩│\n │ │ compressOld.php │\n ├──────────┼──────────────────────────────────────── ────────────────────────────────┤\n │ utf-8 │ 文本存储为 UTF-8。  \n │ │注意:如果打开了 $wgLegacyEncoding 选项,行*没有*这个 │\n │ │ 标志将在加载时透明地转换为 UTF-8。  \n ├──────────┼──────────────────────────────────────── ────────────────────────────────┤\n │ object │ Text 字段包含一个序列化的 PHP 对象。  \n │ │注意:对象要么包含多个压缩版本│\n │ │ 一起达到更好的压缩比,或者是指│\n │ │ 可以找到文本的另一行。  \n ├──────────┼────────────────────────────────────── ────────────────────────────────┤\n │ 外部 │ 文本存储在 old_text 指定的外部位置 │\n └──────────┴──────────────────────────────────────── ────────────────────────────────┘\n

https://www.mediawiki.org/wiki/Compression

标有 old_flags="gzip" 的旧条目的 old_text 使用 zlib 的 deflate 算法压缩,没有标头字节。 PHP 的 gzinflate() 会直接接受这个文本; 在 Perl 等中,将窗口大小设置为 -MAX_WSIZE 以禁用标题字节。

根据文档,应该像将 blob 数据输入 php 的gzinflate()一样简单。

只是一个猜测,但试试这样:

SELECT UNCOMPRESS(blobname)

顺便说一句,我没有使用 MediaWiki 的经验,但我希望能将您带向正确的方向

查看此页面以获取有关 MySQL 压缩方法的更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM