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

 找回密码
 立即注册
搜索

=====开心农场===牧场之收获、偷取优化代码,顺便修改小BUG~~

[复制链接]
liuzhly 发表于 2009-12-30 12:12:40 | 显示全部楼层 |阅读模式
本帖最后由 liuzhly 于 2010-01-19 16:46 编辑

=======具体详细说明见  4   楼~~~~~~~~



newmc.php,找到:


if ( $_REQUEST['mod'] == "cgi_harvest_product" )
{
                                if ( $_REQUEST['harvesttype'] == "1" )
                                {
.................
                                                                $totalCome = 0;
                                                                $exp = 0;
                                                                foreach ( $animal[animal] as $key => $value )
                                                                {
                                                                                                if ( $value->cId == $_REQUEST['type'] )
                                                                                                {
                                                                                                                                $totalCome += $value->totalCome;
//成果
$mc_repertory = $_SGLOBAL['db']->result( $_SGLOBAL['db']->query( "SELECT repertory FROM ".tname( "plug_newfarm" )." where uid=".intval( $_SGLOBAL['supe_uid']) ), 0 );
$mc_repertory = json_decode( $mc_repertory);

$flag=false;
foreach($mc_repertory ->r as $key=>$val){
        if($_REQUEST['type'] == $val->cId){
                $flag=true;
                $mc_repertory->r[$key]->harvest=$mc_repertory->r[$key]->harvest+$value->totalCome;
        }
}
if(!$flag){
        $cName="";
        switch ($_REQUEST['type']) {
                case 1001:
                        $cName="\\u9E21\\u86CB";
                        break;
                case 1002:
                        $cName="\\u5154\\u4ED4";
                        break;
                                                                        case 1003:
                                                                                $cName="\\u9E45\\u86CB";
                                                                                break;
                                                                        case 1004:
                                                                                $cName="\\u5C0F\\u732B\\u4ED4";
                                                                                break;
                                                                        case 1005:
                                                                                $cName="\\u5B54\\u96C0\\u6BDB";
                                                                                break;
                                                                        case 1006:
                                                                                $cName="\\u5C0F\\u4F01\\u9E45";
                                                                                break;
                                                                        case 1007:
                                                                                $cName="\\u5C0F\\u4E4C\\u9F9F";
                                                                                break;
                                                                        case 1008:
                                                                                $cName="\\u677E\\u9F20\\u5D3D";
                                                                                break;
                                                                        case 1009:
                                                                                $cName="\\u5C0F\\u6CE2\\u65AF\\u732B\\u5D3D";
                                                                                break;
                                                                        case 1010:
                                                                                $cName="\\u5C0F\\u4ED3\\u9F20";
                                                                                break;
                                                                        case 1501:
                                                                                $cName="\\u7F8A\\u6BDB";
                                                                                break;
                                                                        case 1502:
                                                                                $cName="\\u725B\\u5976";
                                                                                break;
                                                                        case 1503:
                                                                                $cName="\\u5C0F\\u7334\\u4ED4";
                                                                                break;
                                                                        case 1504:
                                                                                $cName="\\u5C0F\\u888B\\u9F20";
                                                                                break;
                                                                        case 1505:
                                                                                $cName="\\u5C0F\\u6885\\u82B1\\u9E7F";
                                                                                break;
                                                                        case 1507:
                                                                                $cName="\\u5C0F\\u7F9A\\u7F8A";
                                                                                break;
                                                                }
                                                                $mc_repertory->r[] = "{\"cId\":".$_REQUEST['type'].",\"cName\":\"".$cName."\",\"harvest\":".$value->totalCome.",\"scrounge\":0}";
                                                        }
                                                        $mc_repertory = json_encode( $mc_repertory );
                                                        $mc_repertory = str_replace( "\"{", "{", $mc_repertory );
                                                        $mc_repertory = str_replace( "}\"", "}", $mc_repertory );
                                                        $mc_repertory = str_replace( "\\u", "\\\\u", $mc_repertory );
                                                        $_SGLOBAL['db']->query( "UPDATE ".tname( "plug_newfarm" )." set repertory='".$mc_repertory."' where uid=".$_SGLOBAL['supe_uid'] );
//成果
                                                                                                                $value->totalCome = 0;
                                                                                                                $value->tou = "";
                                                                                                                ++$exp;
                                                                                                }
                                                                }
                                                                if ( $totalCome == 0 )
                                                                {
                                                                                                exit( );
                                                                }

移动绿色的代码如下面红色
                                                                $totalCome = 0;
                                                                $exp = 0;
$mc_repertory = $_SGLOBAL['db']->result( $_SGLOBAL['db']->query( "SELECT repertory FROM ".tname( "plug_newfarm" )." where uid=".intval( $_SGLOBAL['supe_uid']) ), 0 );
$mc_repertory = json_decode( $mc_repertory);

                                                                foreach ( $animal[animal] as $key => $value )
                                                                {
                                                                                                if ( $value->cId == $_REQUEST['type'] )
                                                                                                {
                                                                                                                                $totalCome += $value->totalCome;
//成果
$flag=false;
foreach($mc_repertory ->r as $key=>$val){
        if($_REQUEST['type'] == $val->cId){
                $flag=true;
                $mc_repertory->r[$key]->harvest=$mc_repertory->r[$key]->harvest+$value->totalCome;
        }
}
if(!$flag){
        $cName="";
        switch ($_REQUEST['type']) {
                case 1001:
                        $cName="\\u9E21\\u86CB";
                        break;
                case 1002:
                        $cName="\\u5154\\u4ED4";
                        break;
                                                                        case 1003:
                                                                                $cName="\\u9E45\\u86CB";
                                                                                break;
                                                                        case 1004:
                                                                                $cName="\\u5C0F\\u732B\\u4ED4";
                                                                                break;
                                                                        case 1005:
                                                                                $cName="\\u5B54\\u96C0\\u6BDB";
                                                                                break;
                                                                        case 1006:
                                                                                $cName="\\u5C0F\\u4F01\\u9E45";
                                                                                break;
                                                                        case 1007:
                                                                                $cName="\\u5C0F\\u4E4C\\u9F9F";
                                                                                break;
                                                                        case 1008:
                                                                                $cName="\\u677E\\u9F20\\u5D3D";
                                                                                break;
                                                                        case 1009:
                                                                                $cName="\\u5C0F\\u6CE2\\u65AF\\u732B\\u5D3D";
                                                                                break;
                                                                        case 1010:
                                                                                $cName="\\u5C0F\\u4ED3\\u9F20";
                                                                                break;
                                                                        case 1501:
                                                                                $cName="\\u7F8A\\u6BDB";
                                                                                break;
                                                                        case 1502:
                                                                                $cName="\\u725B\\u5976";
                                                                                break;
                                                                        case 1503:
                                                                                $cName="\\u5C0F\\u7334\\u4ED4";
                                                                                break;
                                                                        case 1504:
                                                                                $cName="\\u5C0F\\u888B\\u9F20";
                                                                                break;
                                                                        case 1505:
                                                                                $cName="\\u5C0F\\u6885\\u82B1\\u9E7F";
                                                                                break;
                                                                        case 1507:
                                                                                $cName="\\u5C0F\\u7F9A\\u7F8A";
                                                                                break;
                                                                }
                                                                $mc_repertory->r[] = "{\"cId\":".$_REQUEST['type'].",\"cName\":\"".$cName."\",\"harvest\":".$value->totalCome.",\"scrounge\":0}";
                                                $mc_repertory = json_encode( $mc_repertory );
                                                $mc_repertory = json_decode( $mc_repertory);

                                                        }
//成果
                                                                                                                $value->totalCome = 0;
                                                                                                                $value->tou = "";
                                                                                                                ++$exp;
                                                                                                }
                                                                }
                                                                if ( $totalCome == 0 )
                                                                {
                                                                                                exit( );
                                                                }
                                                       $mc_repertory = json_encode( $mc_repertory );
                                                        $mc_repertory = str_replace( "\"{", "{", $mc_repertory );
                                                        $mc_repertory = str_replace( "}\"", "}", $mc_repertory );
                                                        $mc_repertory = str_replace( "\\u", "\\\\u", $mc_repertory );
                                                        $_SGLOBAL['db']->query( "UPDATE ".tname( "plug_newfarm" )." set repertory='".$mc_repertory."' where uid=".$_SGLOBAL['supe_uid'] );



继续2楼!

评分

1

查看全部评分

回复

使用道具 举报

 楼主| liuzhly 发表于 2009-12-30 12:12:59 | 显示全部楼层
本帖最后由 liuzhly 于 2010-01-19 16:45 编辑

找到  if ( $_REQUEST['mod'] == "cgi_steal_product" )
{

............

                                $tounum = 0;
                                foreach ( $animal[animal] as $key => $value )
                                {
                                                                if ( $_REQUEST['type'] == $value->cId )
                                                                {
                                                                                                if ( !stristr( $value->tou, ",".$_SGLOBAL['supe_uid']."," ) )
                                                                                                {
                                                                                                                                if ( $shop[$_REQUEST['type']][output] / 2 < $value->totalCome )
                                                                                                                                {
                                                                                                                                     // $value = "totalCome"; // 这里解决的也不是我们说的bug,而是偷蛋不减数、而且可以继续偷
                                                                                         $value->totalCome--;
                                                                                                                                     ++$tounum;
                                                                                                                                     $value->tou = $value->tou.",".$_SGLOBAL['supe_uid'].",";
//成果
$mc_repertory = $_SGLOBAL['db']->result( $_SGLOBAL['db']->query( "SELECT repertory FROM ".tname( "plug_newfarm" )." where uid=".intval( $_SGLOBAL['supe_uid']) ), 0 );
$mc_repertory = json_decode( $mc_repertory);

$flag=false;
foreach($mc_repertory ->r as $key=>$val){
                if($_REQUEST['type'] == $val->cId){
                $flag=true;
                $mc_repertory->r[$key]->scrounge=$mc_repertory->r[$key]->scrounge+$tounum;
        }
}
if(!$flag){
        $cName="";
        switch ($_REQUEST['type']) {
                case 1001:
                        $cName="\\u9E21\\u86CB";
                        break;
                                                                                                                                                                              case 1002:
                        $cName="\\u5154\\u4ED4";
                        break;
                                                                                                                                                                              case 1003:
                         $cName="\\u9E45\\u86CB";
                         break;
                                                                                                                                                                              case 1004:
                         $cName="\\u5C0F\\u732B\\u4ED4";
                         break;
                                                                                                                                                                              case 1005:
                         $cName="\\u5B54\\u96C0\\u6BDB";
                         break;
                                                                                                                                                                              case 1006:
                         $cName="\\u5C0F\\u4F01\\u9E45";
                         break;
                                                                                                                                                                               case 1007:
                          $cName="\\u5C0F\\u4E4C\\u9F9F";
                          break;
                                                                                                                                                                               case 1008:
                          $cName="\\u677E\\u9F20\\u5D3D";
                          break;
                                                                                                                                                                               case 1009:
                         $cName="\\u5C0F\\u6CE2\\u65AF\\u732B\\u5D3D";
                         break;
                                                                                                                                                                               case 1010:
                         $cName="\\u5C0F\\u4ED3\\u9F20";
                         break;
                                                                                                                                                                               case 1501:
                         $cName="\\u7F8A\\u6BDB";
                         break;
                                                                                                                                                                               case 1502:
                         $cName="\\u725B\\u5976";
                         break;
                                                                                                                                                                               case 1503:
                        $cName="\\u5C0F\\u7334\\u4ED4";
                        break;
                                                                                                                                                                               case 1504:
                        $cName="\\u5C0F\\u888B\\u9F20";
                        break;
                                                                                                                                                                               case 1505:
                        $cName="\\u5C0F\\u6885\\u82B1\\u9E7F";
                        break;
                                                                                                                                                                               case 1507:
                        $cName="\\u7F9A\\u7F8A";
                        break;
          }
                  $mc_repertory->r[] = "{\"cId\":".$_REQUEST['type'].",\"cName\":\"".$cName."\",\"harvest\":0,\"scrounge\":".$tounum."}";
                                                                                                                                                                        }
        $mc_repertory = json_encode( $mc_repertory );
          $mc_repertory = str_replace( "\"{", "{", $mc_repertory );
    $mc_repertory = str_replace( "}\"", "}", $mc_repertory );
    $mc_repertory = str_replace( "\\u", "\\\\u", $mc_repertory );
           $_SGLOBAL['db']->query( "UPDATE ".tname( "plug_newfarm" )." set repertory='".$mc_repertory."' where uid=".$_SGLOBAL['supe_uid'] );

//成果
                                                                                                                                }
                                                                                                               
                                                                                                }
                                                                }
                                }

将 绿色的代码移动出来如下红色:


                                $tounum = 0;
$mc_repertory = $_SGLOBAL['db']->result( $_SGLOBAL['db']->query( "SELECT repertory FROM ".tname( "plug_newfarm" )." where uid=".intval( $_SGLOBAL['supe_uid']) ), 0 );
$mc_repertory = json_decode( $mc_repertory);

                                foreach ( $animal[animal] as $key => $value )
                                {
                                                                if ( $_REQUEST['type'] == $value->cId )
                                                                {
                                                                                                if ( !stristr( $value->tou, ",".$_SGLOBAL['supe_uid']."," ) )
                                                                                                {
                                                                                                                                if ( $shop[$_REQUEST['type']][output] / 2 < $value->totalCome )
                                                                                                                                {
                                                                                                                                     // $value = "totalCome"; // 这里解决的也不是我们说的bug,而是偷蛋不减数、而且可以继续偷
                                                                                         $value->totalCome--;
                                                                                                                                     ++$tounum;
                                                                                                                                     $value->tou = $value->tou.",".$_SGLOBAL['supe_uid'].",";
//成果
$flag=false;
foreach($mc_repertory ->r as $key=>$val){
                if($_REQUEST['type'] == $val->cId){
                $flag=true;
                //$mc_repertory->r[$key]->scrounge=$mc_repertory->r[$key]->scrounge+$tounum;
                $mc_repertory->r[$key]->scrounge++;  //这里改为 ++ 是加一个,我查了,如果偷三个,成果里就显示增加6个,就是1+2+3 ,所以上面代码是错误的,顺便修改一下!

        }
}
if(!$flag){
        $cName="";
        switch ($_REQUEST['type']) {
                case 1001:
                        $cName="\\u9E21\\u86CB";
                        break;
                                                                                                                                                                              case 1002:
                        $cName="\\u5154\\u4ED4";
                        break;
                                                                                                                                                                              case 1003:
                         $cName="\\u9E45\\u86CB";
                         break;
                                                                                                                                                                              case 1004:
                         $cName="\\u5C0F\\u732B\\u4ED4";
                         break;
                                                                                                                                                                              case 1005:
                         $cName="\\u5B54\\u96C0\\u6BDB";
                         break;
                                                                                                                                                                              case 1006:
                         $cName="\\u5C0F\\u4F01\\u9E45";
                         break;
                                                                                                                                                                               case 1007:
                          $cName="\\u5C0F\\u4E4C\\u9F9F";
                          break;
                                                                                                                                                                               case 1008:
                          $cName="\\u677E\\u9F20\\u5D3D";
                          break;
                                                                                                                                                                               case 1009:
                         $cName="\\u5C0F\\u6CE2\\u65AF\\u732B\\u5D3D";
                         break;
                                                                                                                                                                               case 1010:
                         $cName="\\u5C0F\\u4ED3\\u9F20";
                         break;
                                                                                                                                                                               case 1501:
                         $cName="\\u7F8A\\u6BDB";
                         break;
                                                                                                                                                                               case 1502:
                         $cName="\\u725B\\u5976";
                         break;
                                                                                                                                                                               case 1503:
                        $cName="\\u5C0F\\u7334\\u4ED4";
                        break;
                                                                                                                                                                               case 1504:
                        $cName="\\u5C0F\\u888B\\u9F20";
                        break;
                                                                                                                                                                               case 1505:
                        $cName="\\u5C0F\\u6885\\u82B1\\u9E7F";
                        break;
                                                                                                                                                                               case 1507:
                        $cName="\\u7F9A\\u7F8A";
                        break;
          }
                  $mc_repertory->r[] = "{\"cId\":".$_REQUEST['type'].",\"cName\":\"".$cName."\",\"harvest\":0,\"scrounge\":".$tounum."}";
                                                $mc_repertory = json_encode( $mc_repertory );
                                                $mc_repertory = json_decode( $mc_repertory);

                                                                                                                                                                        }
//成果
                                                                                                                                }
                                                                                                               
                                                                                                }
                                                                }
                                }

//橘黄色代码顺便解决蛋被主人先收取,别人未刷新偷取的时候显示偷0个的小问题,提示 :操作太晚了...
        $tounum == 0 && exit("{\"errorContent\":\"\\u4F60\\u6765\\u7684\\u4E5F\\u592A\\u665A\\u4E86\\u5427...\",\"errorType\":\"1011\"}");

        $mc_repertory = json_encode( $mc_repertory );
          $mc_repertory = str_replace( "\"{", "{", $mc_repertory );
    $mc_repertory = str_replace( "}\"", "}", $mc_repertory );
    $mc_repertory = str_replace( "\\u", "\\\\u", $mc_repertory );
           $_SGLOBAL['db']->query( "UPDATE ".tname( "plug_newfarm" )." set repertory='".$mc_repertory."' where uid=".$_SGLOBAL['supe_uid'] );
回复

使用道具 举报

 楼主| liuzhly 发表于 2009-12-30 12:13:16 | 显示全部楼层
本帖最后由 liuzhly 于 2009-12-30 12:25 编辑

至于 如何精简 那些
        $cName="";
        switch ($_REQUEST['type']) {
                case 1001:

查看:https://discuz.dismall.com/thread-1528855-1-1.html
回复

使用道具 举报

 楼主| liuzhly 发表于 2009-12-30 12:13:39 | 显示全部楼层
本帖最后由 liuzhly 于 2009-12-30 12:50 编辑

说明:

上面橘黄色代码顺便解决小BUG.....................

1、收获:一只动物的产物 ,改不改代码无所谓,只循环查询读取数据库各一次 ,如果是3只以及3只以上相同动物的产物收取,不修改,那么数据库 读取、更新 各执行3次及以上,修改后数据库读取、更新各一次

2、偷取:一只动物的产物,,改不改代码无所谓,只循环查询读取数据库各一次 ,如果是3只以及3只以上相同动物的产物收取,不修改,那么数据库 读取、更新 各执行3次及以上,修改后数据库读取、更新各一次

比较:5只相同的动物产物 ,

未修改前: 收获  5+5 次数据库读取、更新     偷取   5+5 次数据库读取、更新   ,数据库读写次数各为:10

修改后:  收获  1+1 次数据库读取、更新     偷取  1+1 次数据库读取、更新   ,数据库读写次数各为:2



系统运行速度于数据库查询更新时间有相当大的关系,优化后,能给mysql降低不少压力~~~


改不改在于大家,本人只是提供方法与思路~~~
回复

使用道具 举报

海鸥FLY 发表于 2009-12-30 15:46:46 | 显示全部楼层
楼主~~~你好伟大~~~上次用了你的优化代码真不错嗳~这个适用于你上次那个的再次修改么》???
回复

使用道具 举报

 楼主| liuzhly 发表于 2009-12-30 16:31:58 | 显示全部楼层
参照颜色、位置修改~~~~
回复

使用道具 举报

老白123 发表于 2009-12-30 18:22:45 | 显示全部楼层
强烈支持!!!!!!!!!!!!!!!!!!!!
回复

使用道具 举报

zhx0327 发表于 2009-12-30 18:53:13 | 显示全部楼层
强烈支持!!!!!!!!!!!!!!!!!!!!
回复

使用道具 举报

kissmahao 发表于 2009-12-30 20:58:24 | 显示全部楼层
((em:09)) 强烈支持!!!!!!!!!!!!!!!!!!!!!!!!!
回复

使用道具 举报

patiku 发表于 2009-12-30 21:18:24 | 显示全部楼层
超级强烈支持!!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-23 13:52 , Processed in 0.127215 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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