很多 WordPress 站长都喜欢通过插件或纯代码实现站点前端 HTML 代码压缩功能(PS:实现方法详见『纯代码实现 WordPress 前端 html 代码压缩优化教程』),不过昨天有博主反馈说他升级之后登录后台总是出现“PHP Warning: Division by zero in”错误。经过检查发现就是通过纯代码实现站点前端 HTML 代码压缩功能造成的,具体问题代码如下:
- $final=strlen($buffer_out);
- $savings=($initial-$final)/$initial*100;
- $savings=round($savings, 2);
- $buffer_out.="n<!--压缩前的大小: $initial bytes; 压缩后的大小: $final bytes; 节约:$savings% -->";
错误发生在上述第 2 行代码中,错误原因就是在运算式子中有可能存在除数为 0 的情况。解决办法有两种,一个就是判断除数是否为 0,另一个就是删除相关代码。
方法一:给$initial 增加判断是否为 0
针对“PHP Warning: Division by zero in”错误的解决办法就是为这个除数$initial 增加一个判断,如果等于 0 就赋值为 1 或其他数值即可。如上述第 2 行代码修改为:
- if($initial==0){$initial=1;}
- $savings=($initial-$final)/$initial*100;
其中 1 可以改为其他数值,毕竟$initial 是页面压缩前的大小,几乎不可能为 0,所以万一它真的等于 0,那么我们就让它不等于 0 就可以了。
方法二:不显示压缩前后的大小数据
其实我们这个压缩前端 HTML 代码达到目的就行,真没必要显示出来压缩前后的大小数据,那么把这个相关代码删除问题也就自然解决了。具体做法只需要将上述 4 行代码全部删除或者全部注释掉即可。具体如下:
- //$final=strlen($buffer_out);
- //$savings=($initial-$final)/$initial*100;
- //$savings=round($savings, 2);
- //$buffer_out.="n<!--压缩前的大小: $initial bytes; 压缩后的大小: $final bytes; 节约:$savings% -->";
总结
以上两种方法都能给解决“PHP Warning: Division by zero in”错误,喜欢显示压缩前后数据的就采用方法一,不喜欢的就采用方法二。boke11 2 联盟认为,功能达到就行,有些信息站长自己了解就可以了,没必要什么都显示出来。
- 赞助本站
- 微信扫一扫
-
- 加入Q群
- QQ扫一扫
-
评论