Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

关于DX2.5 DIY幻灯片模块或图片模块后可能出现网页被卡住或空白的问题和临时解决方法

[复制链接]
snkeyu 发表于 2012-9-27 11:49:48 | 显示全部楼层 |阅读模式
我相信很多用户都曾经为这个问题而烦恼,都不知道怎么出处理和解决!!!

Discuz X 升级到2.5后,DIY增加的幻灯片模块或图片模块在处理大图片的帖子时有可能出现网页被卡住或空白的情况,而且不能进入DIY模式,后台更新也无法处理,而 Discuz x2.0 并不存在此问题;
同时也有很多网友在 Discuz 官方发帖咨询了这个问题,但 Discuz 官方的人一直以用户模板问题为由,一直不关注这个BUG;

如部分用户发表的帖子:
DX2.5更新了一个DIY 首页就卡主不动了
https://discuz.dismall.com/thread-3113990-1-1.html
【经验分享】关于门户diy空白,界面不显示解决方案
https://discuz.dismall.com/thread-3068263-1-1.html
每次升级 X2.5 都出现首页DIY模块显示不了的情况
https://discuz.dismall.com/thread-2971703-1-1.html
首页门户不显示··DIY显示空白··已经第五天了··求帮助····
https://discuz.dismall.com/thread-3025296-1-1.html
门户首页显示不全,diy也打不开。
https://discuz.dismall.com/thread-2804758-1-1.html
门户首页显示一半,下半部分没有了,DIY失灵了。
https://discuz.dismall.com/thread-2933970-1-1.html
门户DIY模板调试之后开始正常,过一会下半部分就不显示了
https://discuz.dismall.com/thread-2950201-1-1.html
等等......

曾经我们的客户也找过 Discuz 的官方技术看过,都说是用户模板的问题;也有网友用 Discuz 官方默认模板也出现这个情况,这样就可以证明不是 Discuz 技术所说的是用户模板的问题了;

那为什么 Discuz X2.5 会这样呢?而 Discuz X2.0 则不会出现这种情况?
昨天我们的技术人员对这个问题进行了详细的研究和测试!

首先让我们先测试一下为什么会出现这个情况:
我们先在电脑安装一个ComsenzEXP
然后分别安装 Discuz! X2.0 最新版 和 Discuz! X2.5 最新版,并分别上传了同一张相片(大小为1.7M左右)
然后分别在 Discuz! X2.0 和 Discuz! X2.5 默认模板下DIY加入 “[内置]帖子图片幻灯片” 样式,并设置好相同的条件;
保存后,测试,好像两个测试站都并没有出现上面所说到的页面被卡住或空白的现象,为什么呢?

因为本地php环境的缓存默认设置比较大,而部分用户购买的虚拟主机缓存设置相对比较小,所以让我们先打开 php.ini 文件,把 memory_limit 改为 32M ,保存后重启一下Apache,然后再DIY更改一下“缩略图宽度”,保存后,刷新页面,
Discuz! X2.5 出现了页面被卡住的现象,而 Discuz! X2.0 还正常显示,只是图片显示的为一个红X,但并没有卡住页面;
为什么呢?

经排查,是 source\class\class_image.php 的 $im = @$imagecreatefromfunc($this->source); 出现内存溢出;
但 Discuz! X2.0 也是使用同样的一个GD库,为什么不会出现这情况呢?

再对比一下 Discuz! X2.0 和 Discuz! X2.5 的文件我们不难发现, Discuz! X2.5 的 source\function\function_block.php 这个文件,出现了一个BUG,在修改 common_block_item 表的图片是否生成了缩图时,"$itemid" 并没有被赋值,代码如下:
C::t('common_block_item')->update($itemid, array('makethumb'=>1, 'thumbpath' => $thumbpath));
而 Discuz! X2.0 的这个变量已经被赋值了;

那问题就好解决了,只要打开以下文件:
source\function\function_block.php

搜索查找到下面代码:
  1. $rkey = $rpattern = $rvalue = $rtpl = array();
复制代码
在下面一行加入以下代码即可:
  1. $itemid=$blockitem['itemid'];
复制代码
这样每个图片就只会生成一次缩略图,并作好了标记,就算在生成时内存溢出,下次也会跳过这个图片,所以就不会出现上面所说到的页面被卡住或空白的现象了;

最后说明一下,最好打开 php.ini 文件,把 memory_limit 修改大一点,这样,大图片也能被处理了;上面的BUG最好也修改一下,修改后,每次访问都会更新一个图片的缩略图,这样不但页面整体看起来美观,而且对访问的速度也有一定的提高;

其实这个问题我们早前就已经发布过修改方法的了,地址如下,只是并没有引起大家的关注!
https://discuz.dismall.com/thread-2971854-1-1.html
http://www.comiis.com/thread-20301-1-1.html

衷心希望 Discuz 官方人员能尽快修复这个BUG, 以免更多用户出现这个问题!!!

最后,感谢大家对克米设计的支持,谢谢!
http://www.comiis.com
北北″ 发表于 2012-9-27 11:52:10 | 显示全部楼层
回复

使用道具 举报

钻石家族 发表于 2012-10-6 19:14:33 | 显示全部楼层
这个很有道理
回复

使用道具 举报

weifeng01 发表于 2012-10-10 16:04:05 | 显示全部楼层
学习了
回复

使用道具 举报

xlm250 发表于 2012-10-22 18:17:49 | 显示全部楼层
问题解决了.谢谢楼主.................www.xikenet.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-16 13:37 , Processed in 0.033757 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表