簡體   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