wordpress 博客搬家 – 版本0.6.1更新详情

Wikis > cnblogs数据导入wordpress > 数据导入插件更新说明 > wordpress 博客搬家 - 版本0.6.1更新详情

在写更新说明前,先感谢两位使用者,@JUNODJS和@青春,感谢他们反馈问题,这次的版本更新算是一次里程碑式的更新,将整个低层代码、数据导入流程全部更新,不过之前提供的插件钩子没有改变,若有兴趣的朋友可以根据提供的钩子补充其他平台数据导入到wordpress的插件。下面详细说明这次更新的细节。

问题1:较大的数据文件上传

这次更新起源于@JUNODJS对于导入Lofter数据的问题,通过分析,首先这次导入的数据比较大,大概有16Mb。上传数据的时候有点困难,当然这个是可以通过调整webserver以及php.ini来解决问题。但是考虑到很多人都是在虚拟主机上架设wordpress,好在之前我发布了一款第三方wordpress补丁包 [点击前去查看详情](可以在wordpress后台搜索“wp-patch”找到并安装),能够通过切割文件上传,解决大文件上传的问题。在这次更新中,允许搭配安装第三方补丁包上传大文件的问题。

问题2:XML解析问题

代码这里就不贴了,之前的XML解析方式不够好,不同的平台不同的博客数据导出后的XML文件可能解析不出结果,这次我在PHP官网网站找到一段代码,对其进行改进。

问题3:大数据导入

以上两个问题解决了,当我上传数据并开始执行导入刚才提到的16Mb数据时,发现webserver会出现504的错误。屡试不爽,为何?按道理来说504是因为长时间获取不到php-fpm的响应造成的,按道理来说,应该是不会的,因为我在导入数据执行过程中,就已返回数据,并离开webserver后台导入数据。经过几次排查,有一条比较靠谱的理由是“php-fpm进程沾满了”没有多余的进程来处理这些过程了。

OK,既然找到这个问题,先不要急着去解决,继续分析他还能引申到另一个问题。这个数据导入的插件是支持多博客站点的。试想一下,一个站点多个博客同时导入数据,那得多少进程?占用多少内存?

为了解决这个问题,我需要修改下整个导入的流程。我将数据导入划分如下:

  1. 让导入数据分步骤进行,一次导入50篇数据,导入完成后,单一博客站点停下来1分钟后继续,多博客站点停下来3分钟后继续
  2. 多博客站点一次最多支持5个站点同时导入数据,超过5分钟,排队等待
  3. 没导入一篇文章,记录更新一次,直至数据导入完成,避免因为导入过程中因为其他原因造成终止

示意图如下:

cnblogs

通过一系列的优化,来解决数据导入这个性能瓶颈。具体情况如何,还有待观察,若有什么问题,还请大家反馈给我。

与这个问题同时还解决了数据导入过程中,强制终止失效的问题。

问题4:导入点点数据遗漏问题

由于点点的文章地址是由于文章的ID + 文章发布日期来组成的,而wordpress的时间是按照UTC来计算的,那么就造成了咱们中国地区相差了8个小时。同理还有其他博客数据时间也存在问题,但不影响数据导入。

问题5:点点图片导入问题

这个是来自@青春的反馈,导入点点轻博客的数据时,图片类型的文章会导入图片,而其他内容的图片则无法导入。

除此之外我个人还发现一个问题,点点提供的数据文件中,图片只提供了压缩后的大小,而“原尺寸”(点点的“原尺寸”也是经过处理压缩的)并未提供。

为了解决这两个问题,修改后的方式为,公开的点点日志,通过线上捕获“原尺寸”图片,而隐私的点点日志,以数据文件中提供的为准。

优化内容

除此之外,这次更新增加了数据导入记录,方便大家了解导入数据过程中,成功导入多少文章、图片、分类、标签,有多少被跳过或失败了,以及最后执行时间。

CSDN的博客验证中也增加了URL验证,而不急于去匹配导入的博客是否正确

最后,有什么问题,大家可以给我留言哦,别忘了关注我的博客哦:

http://list.qq.com/cgi-bin/qf_invite?id=b6eb34388fd016582957d6e50d005146e24fe6b166ee66c0

固定链接加入收藏夹。