菠萝阁

ZBlog官方博客

ZBlogger社区升级成功⚡

经过一天的升级与四天的观察、调试,论坛已经完成升级。

原版本:PHP 5.6 + Discuz! X3.2(GBK版本),缓存采用APC,数据库字符集与排序方式为gbk_chinese_ci。

新版本:PHP 7.1 + Discuz! X3.3(UTF-8版本),缓存采用APCu,数据库字符集与排序方式为utf8mb4_general_ci,引擎为InnoDB。

另外,我们也顺便把首页和应用中心也一并升级到了PHP 7.1。现在Z-Blog全线服务均已升级到PHP 7.1。



如果发现我们的论坛或任何设施存在问题,欢迎在论坛或本博客下反馈,我们将尽快修复。

现在我们发现存在以下问题,一些已反馈给Discuz!官方,一些已自行解决并提交Pull Request,希望他们能够合并:

    1. 在PHP 7.1下存在Warning:http://www.discuz.net/thread-3800026-1-1.html

    2. (已合并)在PHP 7.1下防水墙的Bug:http://git.oschina.net/ComsenzDiscuz/DiscuzX/pulls/31

    3. (已加入)PHP 7的APCu支持(替代APC):http://git.oschina.net/ComsenzDiscuz/DiscuzX/pulls/32 


也给大家分享一下升级与转换过程与可能踩到的坑:

    因为有腾讯云 CDB 备份的存在,我们关闭论坛后,直接使用

alter database `数据库名` default charset utf8mb4 default collate utf8mb4_general_ci;
alter table `表名(有三百多个,请自行处理)` default charset utf8mb4 collate utf8mb4_general_ci;

    数据库要转成utf8mb4的话,不要使用utf8mb4_binutf8mb4_unicode_ci。前者区分大小写,后者把相同字符的全角与半角视为同个字符,对username已存在数据的网站无法处理。另外,utf8mb4和相当多的插件都有兼容性问题,一般用户把上面的utf8mb4改为utf8utf8mb4_general_ci改为utf8_general_ci

    如要把数据库从GBK转换到了utf8mb4。这期间有一部分表转换会出现问题,需要把这些表的索引类型varchar(255)改为varchar(190)。如果使用utf8_general_ci则不需要考虑这一步。

    数据库更改完成后,因为我们是 GBK 转 UTF-8,所以 pre_common_settingpre_common_pluginpre_forum_groupfield 等表,需要把里面的内容再次转换。我们是将其dump出sql,然后执行以下Nodejs脚本:

/**
* Created by zsx (https://www.zsxsoft.com) (2017-1-29)
* Used for Z-BlogPHP BBS (https://www.zblogcn.com)
* WTFPL, but do not remove this copyright information.
* @engine node > 4.0
*/

const fs = require('fs')
const cp = require('child_process')
const data = fs.readFileSync('C:\\Users\\sx\\Downloads\\pre_common_setting (1).sql').toString()
const reg = /s:([1-9]\d*?):"(.*?[^\\\\]"|[^\\\\](\\\\\\\\)+")/g
const utf8Length = str => {
  const m = encodeURIComponent(str).match(/%[89ABab]/g)
  return str.length + (m ? m.length : 0) - 1
}
const newData = data.replace(/CREATE TABLE `(.*?)`/g, "DROP TABLE `$1`; CREATE TABLE `$1`").replace(reg, (org, s1, s2) => `s:${utf8Length(s2)}:"${s2}`)
fs.writeFileSync('Z:\\pre_common_setting.sql', newData, 'utf-8')
cp.exec('notepad Z:\\pre_common_setting.sql')

    Discuz!论坛大量依赖serialize函数,其在GBK和UTF-8下的表现不同。本脚本正是为了将这些不同转化,如若不转,个人资料、评分等会受到影响。

    最后直接上传Discuz! X3.3 UTF-8版本,修改config/config_global.php配置即可使用。3.2转3.3不需要升级脚本。


(最新版本已经支持)接着,我们需要让Discuz支持APCu,参照此Commit,修改Discuz文件即可:http://git.oschina.net/ComsenzDiscuz/DiscuzX/commit/199c64db59eb6f75dfaa177887013ef1df7d8cfe


最后吐槽:

    这个论坛还真是各种意义上的有年头(08年DZ6.0升DZ7.0:https://blog.zblogcn.com/2008/12/23/57/ )……

  • 评论列表:
  •  沙发恭喜
     发布于 2017-02-02 22:28:22  回复该评论
  • Windows 7Windows 7 Google Chrome 55.0.2883.87Google Chrome 55.0.2883.87
    鸡年开工了,啥都妥了,期待2.0
  •  小锋博客
     发布于 2017-02-03 20:45:13  回复该评论
  • Windows 10 x64Windows 10 x64 Google Chrome 55.0.2883.87Google Chrome 55.0.2883.87
    居然不叫我抢沙发!!!算了,前排预留广告位。。。
  •  烽烟无限
     发布于 2017-02-03 20:50:48  回复该评论
  • Mac OS X 10.12.2Mac OS X 10.12.2 Google Chrome 55.0.2883.95Google Chrome 55.0.2883.95
    前排广告位招商!
  •  阿飞
     发布于 2017-02-03 21:17:25  回复该评论
  • Windows 7 x64Windows 7 x64 Maxthon 4.4.8.1000Maxthon 4.4.8.1000
    开工大吉。祝菠萝阁鸡年大吉大利
  •  记忆方法
     发布于 2017-02-20 16:13:41  回复该评论
  • Windows 7 x64Windows 7 x64 Google Chrome 45.0.2454.101Google Chrome 45.0.2454.101
    文章写得不错,以后会多多关注,博主也可以关注一下我的博客。谢谢!
  •  高分作文
     发布于 2017-02-21 10:21:58  回复该评论
  • Windows 7 x64Windows 7 x64 TheWorld BrowserTheWorld Browser
    高分作文特意祝贺一下!zblog技术还是不错的!
  •  天空博客
     发布于 2017-02-26 10:27:06  回复该评论
  • Apple iPadApple iPad Google CriOS 56.0.2924.79Google CriOS 56.0.2924.79
    为什么不用 Memcache 呢?
  •  浅忆
     发布于 2017-03-02 19:50:27  回复该评论
  • Windows 10 x64Windows 10 x64 TheWorld BrowserTheWorld Browser
    有人会整合Z-Blog程序到UCenter么?就是实现账号的统一认证登录(SSO),Z-Blog使用UCenter的用户数据库。。
  •  黑卡
     发布于 2017-04-13 17:59:47  回复该评论
  • Mac OS X 10.11Mac OS X 10.11 Firefox 52.0Firefox 52.0
    论坛早关门了,拥抱移动时代吧
  •  暮光笙林
     发布于 2017-04-14 15:36:48  回复该评论
  • Windows 7 x64Windows 7 x64 Google Chrome 45.0.2454.101Google Chrome 45.0.2454.101
    我觉得现在的评论系统太简单了,每次还要打名称,我的意思是说弄个注册系统,一注册就是普通阅读会员,权限只能是在前台发表评论,所以要提升权限可以在后台由管理员处理。
  •  河儿
     发布于 2017-05-17 18:21:41  回复该评论
  • Windows 10 x64Windows 10 x64 UC Browser 6.1.2716.5UC Browser 6.1.2716.5
    前排观望

发表评论:

Powered By Z-BlogPHP 1.5.1 Zero

ZBlogger社区 版权所有. 鄂ICP备11007414号-2. 管理入口  由又拍云提供CDN支持