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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

====开心农场===农场牧场数据字段压缩,明白的跟进~~

[复制链接]
liuzhly 发表于 2010-1-19 21:33:12 | 显示全部楼层 |阅读模式
本帖最后由 liuzhly 于 2010-01-19 22:03 编辑

发现数据表中很多字段都无用,都是 0 ,而且程序使用foreach循环,值为0的也要循环一次,所以今天大手术,压缩丢弃那些值为0的字段,只保留有值的!!

先上图看压缩后数据表字段情况:


这是初始化农场(第一次进农场)数据字段更新情况:

        //背包
        $package = "{}";
        //肥料
        $fertilizer = "{}";
        //装饰
        $decorative = "{\"1\":{\"1\":{\"status\":1,\"validtime\":0}},\"2\":{\"2\":{\"status\":1,\"validtime\":0}},\"3\":{\"3\":{\"status\":1,\"validtime\":0}},\"4\":{\"4\":{\"status\":1,\"validtime\":0}}}"; //至于装饰压缩见其他贴
        //宠物
        $dog = "{}";
        //花束
        $nosegay = "{}";
        //消息
        $message = "{\"a\":[],\"b\":[],\"c\":[],\"d\":[],\"e\":[]}";
        //牧场动物
        $animal = "{\"animalfood\":20,\"animalfeedtime\":".$_SGLOBAL['timestamp'].",。。。。省略保持原样
        //牧场背包
        $mc_package = "{}";
        //牧场日志
        $mc_log = "{}";

精简吧?数据库又小了不少啊~~~~
好了,开始动手,其实很简单~~~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
 楼主| liuzhly 发表于 2010-1-19 21:33:28 | 显示全部楼层
本帖最后由 liuzhly 于 2010-01-19 21:49 编辑

打开:newfarmjosn.php

考虑到系统资源合理化分配,只在购买物品的时候压缩某数据表~~红色为添加代码!

1、购买神秘玩具种子

if ( $_REQUEST['mod'] == "shop" && $_REQUEST['act'] == "buy" && $_REQUEST['type'] == "1" )
。。。。。。。。。省略
                foreach($package as $key => $value){
                        if($value == 0){unset($package->$key);}
                }

                $package = json_encode( $package );
。。。。。。。。。省略几行,上下相差几行代码。。。。。。。。
                foreach($package as $key => $value){
                        if($value == 0){unset($package->$key);}
                }

                $package = json_encode( $package );


2、装饰无需压缩!!!
3、商店购买工具
if ( $_REQUEST['mod'] == "shop" && $_REQUEST['act'] == "buy" && $_REQUEST['type'] == "3" )
。。。。。。。。。。。。。
        foreach($fertilizer as $key => $value){
                if($value == 0){unset($fertilizer->$key);}
        }

        $fertilizer = json_encode( $fertilizer );
4、买狗
if ( $_REQUEST['mod'] == "shop" && $_REQUEST['act'] == "buy" && $_REQUEST['type'] == "4" )
。。。。。。。。。。。。。。。。。
        foreach($fertilizerarr as $key => $value){
                if($value == 0){unset($fertilizerarr->$key);}
        }

        $fertilizerarr_srt = json_encode( $fertilizerarr );

5、卖出作物果实

if ( $_REQUEST['mod'] == "repertory" && $_REQUEST['act'] == "sale" )
。。。。。。。。。。。。。
        foreach($fruitarr as $key => $value){
                if($value == 0){unset($fruitarr->$key);}
        }

        $fruitarr = json_encode( $fruitarr );

if ( $_REQUEST['mod'] == "repertory" && $_REQUEST['act'] == "saleAll" )
。。。。。。。。。。。。。。
                foreach($fruitarr as $key => $value){
                        if($value == 0){unset($fruitarr->$key);}
                }

                $fruitarr = json_encode( $fruitarr );

6、制作花
if ( $_REQUEST['mod'] == "Nosegay" && $_REQUEST['act'] == "makeNosegay" )
。。。。。。。。。。。。。。。。。
                foreach($nosegay as $key => $value){
                        if($value == 0){unset($nosegay->$key);}
                }

                $fruit = json_encode( $fruit );
                $nosegay = json_encode( $nosegay );
。。。。。。。。。。下面间隔几行。。。。
                foreach($nosegay as $key => $value){
                        if($value == 0){unset($nosegay->$key);}
                }

                $fruit = json_encode( $fruit );
                $nosegay = json_encode( $nosegay );
回复

使用道具 举报

 楼主| liuzhly 发表于 2010-1-19 21:33:44 | 显示全部楼层
本帖最后由 liuzhly 于 2010-01-19 21:53 编辑

7、赠送礼物

if ( $_REQUEST['mod'] == "message" && $_REQUEST['act'] == "sendMessage" && $_REQUEST['type'] == "5" )
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
        foreach($nosegay as $key => $value){
                if($value == 0){unset($nosegay->$key);}
        }

        $nosegay = json_encode( $nosegay );

8、商店购买糖果礼物

if ( $_REQUEST['mod'] == "shop" && $_REQUEST['act'] == "buy" && $_REQUEST['type'] == "10" )
。。。。。。。。。。。。。。。。。。。。
        foreach($nosegay as $key => $value){
                if($value == 0){unset($nosegay->$key);}
        }

        $nosegay = json_encode( $nosegay );
回复

使用道具 举报

 楼主| liuzhly 发表于 2010-1-19 21:34:00 | 显示全部楼层
本帖最后由 liuzhly 于 2010-01-19 22:06 编辑

至此为止,修改完毕,不过因为丢失无用字段,导致如清空产物包裹,显示有点问题,会有超时现象,没事,稍加修改即可!
注意:红色为增加的!!

if ( $_REQUEST['mod'] == "repertory" && $_REQUEST['act'] == "getUserCrop" )
。。。。。。。。。。。。。。。
        if( join($fruitarr) != '' ){  //我就纳闷了,使用 !empty($fruitarr)或者 count($fruitarr) == 1就是不好用~~~
                $fruitarr = json_encode( $fruitarr );
                $fruitarr = str_replace( "\"{", "{", $fruitarr );
                $fruitarr = str_replace( "}\"", "}", $fruitarr );
        }else{
                $fruitarr = '[]';
        }
回复

使用道具 举报

 楼主| liuzhly 发表于 2010-1-19 21:34:16 | 显示全部楼层
本帖最后由 liuzhly 于 2010-01-19 22:29 编辑

下面修改牧场,就更简单了~~

打开 newmc.php

找到:

1、卖出副产品,清空仓库
if ( $_REQUEST['mod'] == "cgi_sale_product" )

                foreach ( $mc_package as $key => $value ){
                        if ( 0 < $value ){
                                $money += $animalname[$key][price] * $value;
                                $mc_package->$key = 0;
                        }
                        unset($mc_package->$key);
                }
                $mc_package = json_encode( $mc_package );

。。。。。。。。。。。。继续几行代码。。。。。。。。。
                foreach($mc_package as $key => $value){
                        if($value == 0){unset($mc_package->$key);}
                }

                $mc_package = json_encode( $mc_package );


牧场包裹,有时候会因找不到牧草出现等待现象,一并解决了!

if ( $_REQUEST['mod'] == "cgi_get_repertory?target=package" )
{
                                $fruit = $_SGLOBAL['db']->result( $_SGLOBAL['db']->query( "SELECT fruit FROM ".tname( "plug_newfarm" )." where uid=".$_SGLOBAL['supe_uid'] ), 0 );
                                $fruit = json_decode( $fruit );
                                $id = 40;
                                $id2 = 3;
                                echo "[{\"amount\":".intval($fruit->$id).",\"tId\":40,\"tName\":\"\\u7267\\u8349\",\"type\":4},{\"aidlist\":[1002],\"amount\":".intval($fruit->$id2).",\"tDesc\":\"\\u7279\\u6B8A\\u4F5C\\u7269\\uFF0C\\u4F9B\\u5154\\u5B50\\u4F7F\\u7528\\u53EF\\u51CF\\u5C11\\u751F\\u957F\\u65F6\\u95F45\\u5206\\u949F\\u3002\",\"tId\":3,\"tName\":\"\\u80E1\\u841D\\u535C\",\"type\":4}]";
}
回复

使用道具 举报

 楼主| liuzhly 发表于 2010-1-19 21:34:32 | 显示全部楼层
本帖最后由 liuzhly 于 2010-01-19 22:01 编辑

至于初始化农牧场,可改可不改,因为进入农牧场以后,只要有相关操作,系统自动压缩数据表了~~~

回头抽时间看看 把 农牧场 两个大字段(显示作物地块)和(牧场中的动物)也压缩一下!!!!  


注:新手新人请勿跟进,操作数据库,最好备份一下数据库!!
回复

使用道具 举报

kissmahao 发表于 2010-1-19 21:51:38 | 显示全部楼层
  强银。。
回复

使用道具 举报

samfs 发表于 2010-1-19 21:52:13 | 显示全部楼层
感谢  高手
回复

使用道具 举报

dansui1314 发表于 2010-1-19 22:05:50 | 显示全部楼层
好贴!!帮顶~~~
回复

使用道具 举报

guoker 发表于 2010-1-19 22:07:01 | 显示全部楼层
高,实在是高:)
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-19 01:48 , Processed in 0.027741 second(s), 3 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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