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

 找回密码
 立即注册
搜索

QQ农场好友列表代码优化

[复制链接]
逍遥le园 发表于 2010-1-23 09:56:23 | 显示全部楼层 |阅读模式
刚接触农场,看这几天大家都讨论代码优化问题,也发表一下看法。注:以前也没接触过PHP代码,代码看不太懂;对flash的工作原理更是一点也不了解,只能模仿代码里的写法来写,见笑了。开始工作了:
大家反映读好友列表效率低问题,我看了下代码,主要是数据库交互次数太多(小小宇做了个冗余字段来改善,可能是考虑数据同步问题,又删了),针对这个问题可以做一下优化:
原始代码(农场,牧场方法一样,只是表happyfarm_nc换成happyfarm_mc)
  1.         $Config = $_SGLOBAL['db']->query( "SELECT uid,money,pf,vip FROM ".tname( "happyfarm_config" )." WHERE uid IN (".$space[friend].$UID.")" );
  2.         while ( $value = $_SGLOBAL['db']->fetch_array( $Config ) )
  3.         {
  4.                 $list[$value['uid']] =$value;
  5.         }
  6.         $query = $_SGLOBAL['db']->query( "SELECT uid,exp FROM ".tname( "happyfarm_nc" )." where uid IN (".$space[friend].$UID.")" );

  7.         while ( $value = $_SGLOBAL['db']->fetch_array( $query ) )
  8.         {
  9.                 $list[$value['uid']] =array_merge( $list[$value['uid']], $value );
  10.         }
  11.         $friendid = "";
  12.         foreach ( $list as $value )
  13.         {
  14.                 $friendid = $friendid.$value[uid];
  15.                 $friendid = $friendid.",";
  16.         }
  17.         $friendid = substr( $friendid, 0, -1 );
  18.         $query = $_SGLOBAL['db']->query( "SELECT uid,username,name FROM ".tname( "space" )." WHERE uid IN (".$friendid.")" );
  19.         while ( $value = $_SGLOBAL['db']->fetch_array( $query ) )
  20.         {
  21.                 $list[$value['uid']] = array_merge( $list[$value['uid']], $value );
  22.         }
复制代码
修改后:
  1.         $Config = $_SGLOBAL['db']->query( "SELECT C.uid,C.money,C.pf,C.vip,N.exp,S.username,S.name FROM ".tname( "happyfarm_config" )." C Left JOIN ".tname( "happyfarm_nc" )." N ON N.uid=C.uid LEFT JOIN ".tname( "space" )." S ON S.uid=C.uid WHERE C.uid IN (".$space[friend].$UID.")" );
  2.         while ( $value = $_SGLOBAL['db']->fetch_array( $Config ) )
  3.         {
  4.                 $list[] =$value;
  5.         }
复制代码
把三次数据库访问及若干数据处理简化为一次数据库访问,代码也变短了,大家可以试一下。
回复

使用道具 举报

103694021 发表于 2010-1-23 10:04:21 | 显示全部楼层
{:2_123:}0......
回复

使用道具 举报

hotview 发表于 2010-1-23 12:18:09 | 显示全部楼层
按照楼主的修改了
回复

使用道具 举报

samfs 发表于 2010-1-23 22:21:12 | 显示全部楼层
我用liuzhiy的用户名优化,好友刷新非常的快
回复

使用道具 举报

唯希 发表于 2010-1-28 01:05:41 | 显示全部楼层
现在小宇也是按照你的方法做了改变,但是原来的默认全站好友的方法却失效了。原来取消." WHERE uid IN (".$space[friend].$UID.")" 这段查询语句即可,现在你的代码是变短了但是没有办法默认全站好友了
回复

使用道具 举报

 楼主| 逍遥le园 发表于 2010-1-28 15:52:58 | 显示全部楼层
删掉这一段依然可以使默认全站好友 WHERE C.uid IN (".$space[friend].$UID."),当然必须是加过农场用户
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-16 07:32 , Processed in 0.109072 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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