吵吵   2012-05-01  阅读:2,814

这些年我们移植过很多的wp站点,我们以为基于wp站点移植的问题我们都已经明白了。知道我们最近遇到了一个前所未有的问题,即数据的串行化,使得我们不能如此轻易的移植一个wordpress站点。

我们钟爱wp的原因是因为它是如此的有前途,一旦你建立了一个wordpress的站点,你不会因为以下的问题而束手无策:

1、内容和形式是分离的,因此你能够完全的重新设计你的网站,但是内容和链接结构却不会改变。这对搜索引擎来说是非常重要的,你不会丢掉你的连接和内链。

2、随着wp的开发日益深入,wp会逐步的支持一些新兴的技术,所以用户不会被滞留在一个旧的系统,就好比ie7不支持html5,但是wp会一直跟新。

3、你的站点是十分轻便的。如果你需要将你的站点转移到另外一个服务器,或者是更换域名,轻松的几步就能搞定:替换,导出和导入数据,设置301跳转,搞定。

数据串行化对移植的影响

老实说,在数据的串行化方面我是一个新手。开发者使用串行化的数据很大程度上是想提高开发的效率。试想让你建立一个表,并添加不同的字段,或者直接一行数据写入数据库,你会认为哪个简单方便呢?

一反面串行化的数据节省了数据库的空间,另一方面对于开发者来说也省去了很多的sql查询语句。串行化数据使用的是php的serialize()和unserialize()。我们用一个例子来看看什么叫串行化数据。

$data = array( 'apple', 'banana', 'orange' );
echo serialize( $data );
// 下面是我们串行化一个数组后的结果:
// a:3:{i:0;s:5:"apple";i:1;s:6:"banana";i:2;s:6:"orange";}

从上面我们知道,如果是一个串行化的数据存储在数据库中的话,你需要通过php的unserialize()函数来恢复它的结构,那么这就意味着如果你使用mysql的一些语句来取值的话就不行了。例如数据库的搜索函数,就没有办法针对某个字段进行搜索了,因为它变成了一个长的字符串。

以上的原因对于开发者来说可能是噩梦,但是更大的隐患在于如果我们移植的站点语言有所改变的话,我们是没有办法来根据这一串数据来改变输出的语言的。

在php手册的serialize()函数下有条匿名评论作者讲的非常的恳切。他恳求大家不要将串行化的数据存储在数据库,不仅破坏了原有的数据结构与关系,而且难以读懂。更重要的是如果我们使用其他编程语言如java来调用数据库的话,就会变得非常艰难了,光恢复数据结构就要大费力气。

但是wp却干了一个如此傻逼的错误,在数据库中你能看到很多串行化保存的数据:

1、一些微件的数据(即是我们能够使用数据库保存微件的数据)。

2、一些主题的设置参数。

3、插件的数据。

我们该如何做?

一些串行化数据的建议:

1、主题和插件开发者:请仔细考虑和衡量一下串行化数据的好处和因此可能会在将来引起的问题。

2、主题和插件开发者:如果你必须串行化数据的话,请确保有办法导入和导出数据,即使是一个.csv的导出也比什么都不做要好。

3、wordpress使用者:在使用一个主题或者插件之前确认是否是串行化保存的数据。

如果你发现你的数据库中有保存串行化的数据的话,下面一些工具可能会有用:

Peach-一款可以更改串行化数据中URL的网络应用

WordPress Search and Replace Tool-这款工具非常强大,支持多重嵌套的串行化数据替换,支持多种编码格式的串行化数据的替换。记得当你用完后在你的服务器上删除这个脚本哦。

WP Migrate DB-一款支持url和文件路劲替换的插件,支持串行化数据替换,并且会更新字符串的长度。

吵吵微信朋友圈,请付款实名加入:

吵吵 吵吵

5条回应:“wp的数据移植和数据串行化”

  1. ixwebhosting说道:

    来学习一下,好棒的文章,谢谢分享

  2. 标语大全说道:

    数据的串行化方面还不懂,新手都不是,呵呵!

  3. 水草浪子说道:

    第一眼就看到了铺天盖地的广告啊 我的神·····

  4. 上海做网站说道:

    说的不错,支持一下

  5. 很不错哦!

发表评论

电子邮件地址不会被公开。 必填项已用*标注