标题: 后台积分更新程序statbuilder.php优化版
塞北的雪
骑士
Rank: 24Rank: 24Rank: 24


UID 138766
精华 1
积分 2660
帖子 178
威望 2
现金 287 银币
金币 0 金币
阅读权限 50
注册 2008-4-8
状态 离线
发表于 2008-10-2 21:09  资料  个人空间  短消息 

后台积分更新程序statbuilder.php优化版


注意保存编码!!!

<?php
/**
* StatBuilder.php
* 积分计算程序
* @version 1
* @copyright 2008 by Chlorel for XNova
* 19:22 2008-10-2 塞北的雪优化
*/
define('INSIDE', true);
define('INSTALL', false);
define('IN_ADMIN', true);
set_time_limit(0); //脚本执行超时设定
$ugamela_root_path = './../';
include($ugamela_root_path.'extension.inc');
include($ugamela_root_path.'common.'.$phpEx);
function microtime_float()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
$time_start = microtime_float();
include($ugamela_root_path.'admin/statfunctions.'.$phpEx);
includeLang('admin');
$StatDate = time();
//更新总积分
doquery("DELETE FROM {{table}} WHERE `stat_code` = '2';", 'statpoints');
doquery("UPDATE {{table}} SET `stat_code` = `stat_code` + '1';", 'statpoints');
//$GameUsers  = doquery("SELECT * FROM {{table}}", 'users');
$GameUsers = doquery("SELECT id,ally_id,spy_tech,computer_tech,military_tech,defence_tech,shield_tech,energy_tech,hyperspace_tech,combustion_tech,impulse_motor_tech,hyperspace_motor_tech,laser_tech,ionic_tech,buster_tech,intergalactic_tech,expedition_tech,graviton_tech FROM {{table}}", 'users');
while ($CurUser = mysql_fetch_assoc($GameUsers))
{
//旧的排名
$OldStatRecord = doquery("SELECT * FROM {{table}} WHERE `stat_type` = '1' AND `id_owner` = '".$CurUser['id']."';", 'statpoints');
if ($OldStatRecord)
{
  $OldTotalRank = $OldStatRecord['total_rank'];
  $OldTechRank = $OldStatRecord['tech_rank'];
  $OldBuildRank = $OldStatRecord['build_rank'];
  $OldDefsRank = $OldStatRecord['defs_rank'];
  $OldFleetRank = $OldStatRecord['fleet_rank'];
  //删除旧的记录
  doquery("DELETE FROM {{table}} WHERE `stat_type` = '1' AND `id_owner` = '".$CurUser['id']."';", 'statpoints');
}
else
{
  $OldTotalRank = 0;
  $OldTechRank = 0;
  $OldBuildRank = 0;
  $OldDefsRank = 0;
  $OldFleetRank = 0;
}
// Total des unitées consommée pour la recherche
$Points = GetTechnoPoints($CurUser);
$TTechCount = $Points['TechCount'];
$TTechPoints = ($Points['TechPoint'] / 1000);
// Totalisation des points accumulés par planete
$TBuildCount = 0;
$TBuildPoints = 0;
$TDefsCount = 0;
$TDefsPoints = 0;
$TFleetCount = 0;
$TFleetPoints = 0;
$GCount = $TTechCount;
$GPoints = $TTechPoints;
$UsrPlanets = doquery("SELECT id,metal_mine,crystal_mine,deuterium_sintetizer,solar_plant,fusion_plant,robot_factory,nano_factory,hangar,metal_store,crystal_store,deuterium_store,laboratory,terraformer,ally_deposit,mondbasis,phalanx,sprungtor,silo,misil_launcher,small_laser,big_laser,gauss_canyon,ionic_canyon,buster_canyon,small_protection_shield,big_protection_shield,small_ship_cargo,big_ship_cargo,light_hunter,heavy_hunter,crusher,battle_ship,colonizer,recycler,spy_sonde,bomber_ship,solar_satelit,destructor,dearth_star,battleship FROM {{table}} WHERE `id_owner` = '".$CurUser['id']."';", 'planets');
while ($CurPlanet = mysql_fetch_assoc($UsrPlanets))
{
  $Points = GetBuildPoints($CurPlanet);
  $TBuildCount += $Points['BuildCount'];
  $GCount += $Points['BuildCount'];
  $PlanetPoints = ($Points['BuildPoint'] / 1000);
  $TBuildPoints += ($Points['BuildPoint'] / 1000);
  $Points = GetDefensePoints($CurPlanet);
  $TDefsCount += $Points['DefenseCount'];
  ;
  $GCount += $Points['DefenseCount'];
  $PlanetPoints += ($Points['DefensePoint'] / 1000);
  $TDefsPoints += ($Points['DefensePoint'] / 1000);
  $Points = GetFleetPoints($CurPlanet);
  $TFleetCount += $Points['FleetCount'];
  $GCount += $Points['FleetCount'];
  $PlanetPoints += ($Points['FleetPoint'] / 1000);
  $TFleetPoints += ($Points['FleetPoint'] / 1000);
  $GPoints += $PlanetPoints;
  $QryUpdatePlanet = "UPDATE {{table}} SET ";
  $QryUpdatePlanet .= "`points` = '".$PlanetPoints."' ";
  $QryUpdatePlanet .= "WHERE ";
  $QryUpdatePlanet .= "`id` = '".$CurPlanet['id']."';";
  doquery($QryUpdatePlanet, 'planets');
}
$QryInsertStats = "INSERT INTO {{table}} SET ";
$QryInsertStats .= "`id_owner` = '".$CurUser['id']."', ";
$QryInsertStats .= "`id_ally` = '".$CurUser['ally_id']."', ";
$QryInsertStats .= "`stat_type` = '1', "; // 1 pour joueur , 2 pour alliance
$QryInsertStats .= "`stat_code` = '1', "; // de 1 a 2 mis a jour de maniere automatique
$QryInsertStats .= "`tech_points` = '".$TTechPoints."', ";
$QryInsertStats .= "`tech_count` = '".$TTechCount."', ";
$QryInsertStats .= "`tech_old_rank` = '".$OldTechRank."', ";
$QryInsertStats .= "`build_points` = '".$TBuildPoints."', ";
$QryInsertStats .= "`build_count` = '".$TBuildCount."', ";
$QryInsertStats .= "`build_old_rank` = '".$OldBuildRank."', ";
$QryInsertStats .= "`defs_points` = '".$TDefsPoints."', ";
$QryInsertStats .= "`defs_count` = '".$TDefsCount."', ";
$QryInsertStats .= "`defs_old_rank` = '".$OldDefsRank."', ";
$QryInsertStats .= "`fleet_points` = '".$TFleetPoints."', ";
$QryInsertStats .= "`fleet_count` = '".$TFleetCount."', ";
$QryInsertStats .= "`fleet_old_rank` = '".$OldFleetRank."', ";
$QryInsertStats .= "`total_points` = '".$GPoints."', ";
$QryInsertStats .= "`total_count` = '".$GCount."', ";
$QryInsertStats .= "`total_old_rank` = '".$OldTotalRank."', ";
$QryInsertStats .= "`stat_date` = '".$StatDate."';";
doquery($QryInsertStats, 'statpoints');
}
/*
//更新科技积分排名
$Rank = 1;
$RankQry = doquery("SELECT id_owner FROM {{table}} WHERE `stat_type` = '1' AND `stat_code` = '1' ORDER BY `tech_points` DESC;", 'statpoints');
while ($TheRank = mysql_fetch_assoc($RankQry))
{
$QryUpdateStats = "UPDATE {{table}} SET ";
$QryUpdateStats .= "`tech_rank` = '".$Rank."' ";
$QryUpdateStats .= "WHERE ";
$QryUpdateStats .= " `stat_type` = '1' AND `stat_code` = '1' AND `id_owner` = '".$TheRank['id_owner']."';";
doquery($QryUpdateStats, 'statpoints');
$Rank++;
}
//更新建筑积分排名
$Rank = 1;
$RankQry = doquery("SELECT id_owner FROM {{table}} WHERE `stat_type` = '1' AND `stat_code` = '1' ORDER BY `build_points` DESC;", 'statpoints');
while ($TheRank = mysql_fetch_assoc($RankQry))
{
$QryUpdateStats = "UPDATE {{table}} SET ";
$QryUpdateStats .= "`build_rank` = '".$Rank."' ";
$QryUpdateStats .= "WHERE ";
$QryUpdateStats .= " `stat_type` = '1' AND `stat_code` = '1' AND `id_owner` = '".$TheRank['id_owner']."';";
doquery($QryUpdateStats, 'statpoints');
$Rank++;
}
//更新防御积分排名
$Rank = 1;
$RankQry = doquery("SELECT id_owner FROM {{table}} WHERE `stat_type` = '1' AND `stat_code` = '1' ORDER BY `defs_points` DESC;", 'statpoints');
while ($TheRank = mysql_fetch_assoc($RankQry))
{
$QryUpdateStats = "UPDATE {{table}} SET ";
$QryUpdateStats .= "`defs_rank` = '".$Rank."' ";
$QryUpdateStats .= "WHERE ";
$QryUpdateStats .= " `stat_type` = '1' AND `stat_code` = '1' AND `id_owner` = '".$TheRank['id_owner']."';";
doquery($QryUpdateStats, 'statpoints');
$Rank++;
}
//更新舰队积分排名
$Rank = 1;
$RankQry = doquery("SELECT id_owner FROM {{table}} WHERE `stat_type` = '1' AND `stat_code` = '1' ORDER BY `fleet_points` DESC;", 'statpoints');
while ($TheRank = mysql_fetch_assoc($RankQry))
{
$QryUpdateStats = "UPDATE {{table}} SET ";
$QryUpdateStats .= "`fleet_rank` = '".$Rank."' ";
$QryUpdateStats .= "WHERE ";
$QryUpdateStats .= " `stat_type` = '1' AND `stat_code` = '1' AND `id_owner` = '".$TheRank['id_owner']."';";
doquery($QryUpdateStats, 'statpoints');
$Rank++;
}
*/
$Rank = 1;
$RankQry = doquery("SELECT id_owner FROM {{table}} WHERE `stat_type` = '1' AND `stat_code` = '1' ORDER BY `total_points` DESC;", 'statpoints');
while ($TheRank = mysql_fetch_assoc($RankQry))
{
$QryUpdateStats = "UPDATE {{table}} SET ";
$QryUpdateStats .= "`total_rank` = '".$Rank."' ";
$QryUpdateStats .= "WHERE ";
$QryUpdateStats .= " `stat_type` = '1' AND `stat_code` = '1' AND `id_owner` = '".$TheRank['id_owner']."';";
doquery($QryUpdateStats, 'statpoints');
$Rank++;
}
//更新联盟积分
$GameAllys = doquery("SELECT id FROM {{table}}", 'alliance');
while ($CurAlly = mysql_fetch_assoc($GameAllys))
{
// Recuperation des anciennes statistiques
$OldStatRecord = doquery("SELECT total_rank,tech_rank,build_rank,defs_rank,fleet_rank FROM {{table}} WHERE `stat_type` = '2' AND `id_owner` = '".$CurAlly['id']."';", 'statpoints');
if ($OldStatRecord)
{
  $OldTotalRank = $OldStatRecord['total_rank'];
  $OldTechRank = $OldStatRecord['tech_rank'];
  $OldBuildRank = $OldStatRecord['build_rank'];
  $OldDefsRank = $OldStatRecord['defs_rank'];
  $OldFleetRank = $OldStatRecord['fleet_rank'];
  // Suppression de l'ancien enregistrement
  doquery("DELETE FROM {{table}} WHERE `stat_type` = '2' AND `id_owner` = '".$CurAlly['id']."';", 'statpoints');
}
else
{
  $OldTotalRank = 0;
  $OldTechRank = 0;
  $OldBuildRank = 0;
  $OldDefsRank = 0;
  $OldFleetRank = 0;
}
// Total des unitées consommée pour la recherche
$QrySumSelect = "SELECT ";
$QrySumSelect .= "SUM(`tech_points`)  as `TechPoint`, ";
$QrySumSelect .= "SUM(`tech_count`)   as `TechCount`, ";
$QrySumSelect .= "SUM(`build_points`) as `BuildPoint`, ";
$QrySumSelect .= "SUM(`build_count`)  as `BuildCount`, ";
$QrySumSelect .= "SUM(`defs_points`)  as `DefsPoint`, ";
$QrySumSelect .= "SUM(`defs_count`)   as `DefsCount`, ";
$QrySumSelect .= "SUM(`fleet_points`) as `FleetPoint`, ";
$QrySumSelect .= "SUM(`fleet_count`)  as `FleetCount`, ";
$QrySumSelect .= "SUM(`total_points`) as `TotalPoint`, ";
$QrySumSelect .= "SUM(`total_count`)  as `TotalCount` ";
$QrySumSelect .= "FROM {{table}} ";
$QrySumSelect .= "WHERE ";
$QrySumSelect .= "`stat_type` = '1' AND ";
$QrySumSelect .= "`id_ally` = '".$CurAlly['id']."';";
$Points = doquery($QrySumSelect, 'statpoints', true);
$TTechCount = $Points['TechCount'];
$TTechPoints = $Points['TechPoint'];
$TBuildCount = $Points['BuildCount'];
$TBuildPoints = $Points['BuildPoint'];
$TDefsCount = $Points['DefsCount'];
$TDefsPoints = $Points['DefsPoint'];
$TFleetCount = $Points['FleetCount'];
$TFleetPoints = $Points['FleetPoint'];
$GCount = $Points['TotalCount'];
$GPoints = $Points['TotalPoint'];
$QryInsertStats = "INSERT INTO {{table}} SET ";
$QryInsertStats .= "`id_owner` = '".$CurAlly['id']."', ";
$QryInsertStats .= "`id_ally` = '0', ";
$QryInsertStats .= "`stat_type` = '2', "; // 1 pour joueur , 2 pour alliance
$QryInsertStats .= "`stat_code` = '1', "; // de 1 a 5 mis a jour de maniere automatique
$QryInsertStats .= "`tech_points` = '".$TTechPoints."', ";
$QryInsertStats .= "`tech_count` = '".$TTechCount."', ";
$QryInsertStats .= "`tech_old_rank` = '".$OldTechRank."', ";
$QryInsertStats .= "`build_points` = '".$TBuildPoints."', ";
$QryInsertStats .= "`build_count` = '".$TBuildCount."', ";
$QryInsertStats .= "`build_old_rank` = '".$OldBuildRank."', ";
$QryInsertStats .= "`defs_points` = '".$TDefsPoints."', ";
$QryInsertStats .= "`defs_count` = '".$TDefsCount."', ";
$QryInsertStats .= "`defs_old_rank` = '".$OldDefsRank."', ";
$QryInsertStats .= "`fleet_points` = '".$TFleetPoints."', ";
$QryInsertStats .= "`fleet_count` = '".$TFleetCount."', ";
$QryInsertStats .= "`fleet_old_rank` = '".$OldFleetRank."', ";
$QryInsertStats .= "`total_points` = '".$GPoints."', ";
$QryInsertStats .= "`total_count` = '".$GCount."', ";
$QryInsertStats .= "`total_old_rank` = '".$OldTotalRank."', ";
$QryInsertStats .= "`stat_date` = '".$StatDate."';";
doquery($QryInsertStats, 'statpoints');
}
$time_end = microtime_float();
$SpendTime = $time_end - $time_start;
global $numqueries;
AdminMessage($lang['adm_done']."<br>耗时:{$SpendTime}秒。<br>Querys:$numqueries", $lang['adm_stat_title']);
?>

[ 本帖最后由 塞北的雪 于 2008-10-2 21:34 编辑 ]





星战无眠 无尽虚空
http://www.lyg91.com/game/
高速、稳定、BUG最少……
顶部
[广告] 玩游戏已经不算什么啦,来自己做游戏喽!你来他来我也来!
塞北的雪
骑士
Rank: 24Rank: 24Rank: 24


UID 138766
精华 1
积分 2660
帖子 178
威望 2
现金 287 银币
金币 0 金币
阅读权限 50
注册 2008-4-8
状态 离线
发表于 2008-10-3 22:19  资料  个人空间  短消息 

没人回……

以后再也不发FIX了





星战无眠 无尽虚空
http://www.lyg91.com/game/
高速、稳定、BUG最少……
顶部
eyecoco
准骑士
Rank: 18Rank: 18Rank: 18Rank: 18



UID 184171
精华 0
积分 632
帖子 52
威望 0
现金 78 银币
金币 0 金币
阅读权限 40
注册 2008-9-11
状态 离线
发表于 2008-10-4 05:28  资料  个人空间  短消息 

看样只有我顶啦

顶部
China(Ze)
勋爵
Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40
过江猛龙。。


UID 135275
精华 0
积分 8862
帖子 2931
威望 0
现金 30 银币
金币 0 金币
阅读权限 60
注册 2008-3-22
来自 上海
状态 在线
发表于 2008-10-4 05:51  资料  个人空间  短消息 

我也顶

我想是大家10 1 都出去玩了吧





只有大小运的小咩咩…………

^ ^

咳。。昨天远征拉回来一间谍卫星
顶部
[广告] 玩游戏已经不算什么啦,来自己做游戏喽!你来他来我也来!
killjm
士兵
Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7



UID 188941
精华 0
积分 56
帖子 10
威望 0
现金 19 银币
金币 0 金币
阅读权限 20
注册 2008-9-26
状态 离线
发表于 2008-10-4 19:34  资料  个人空间  短消息 

頂一下~~~~  

顶部
enix
准骑士
Rank: 18Rank: 18Rank: 18Rank: 18



UID 172808
精华 0
积分 444
帖子 18
威望 0
现金 37 银币
金币 0 金币
阅读权限 40
注册 2008-8-15
状态 离线
发表于 2008-10-5 14:40  资料  个人空间  短消息 

Warning:  set_time_limit() has been disabled for security reasons in /admin/statbuilder.php on line 12
用了以後會出現這個錯誤
有解嗎? 謝謝



[ 本帖最后由 enix 于 2008-10-5 14:57 编辑 ]

顶部
[广告] 玩游戏已经不算什么啦,来自己做游戏喽!你来他来我也来!
塞北的雪
骑士
Rank: 24Rank: 24Rank: 24


UID 138766
精华 1
积分 2660
帖子 178
威望 2
现金 287 银币
金币 0 金币
阅读权限 50
注册 2008-4-8
状态 离线
发表于 2008-10-5 21:30  资料  个人空间  短消息 
回复 #6 enix 的帖子


你那个是空间商把那个函数被禁用了,你可以把这句注释掉





星战无眠 无尽虚空
http://www.lyg91.com/game/
高速、稳定、BUG最少……
顶部
[广告] 论坛投票锁帖系统(主题帖投票)启用,会员可以控制帖子的关闭与否
China(Ze)
勋爵
Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40
过江猛龙。。


UID 135275
精华 0
积分 8862
帖子 2931
威望 0
现金 30 银币
金币 0 金币
阅读权限 60
注册 2008-3-22
来自 上海
状态 在线
发表于 2008-10-8 18:03  资料  个人空间  短消息 

强贴在在顶上给大家看~





只有大小运的小咩咩…………

^ ^

咳。。昨天远征拉回来一间谍卫星
顶部
[广告] 把自己写进最经典的角色扮演游戏中去,这就是同人版魔法门7!(第二版)
lh-kyo
准骑士
Rank: 18Rank: 18Rank: 18Rank: 18



UID 153256
精华 0
积分 490
帖子 50
威望 0
现金 14 银币
金币 0 金币
阅读权限 40
注册 2008-6-18
状态 离线
发表于 2008-10-10 17:38  资料  个人空间  短消息 

塞北好强大,严重顶啊~~~~~~~~

顶部
[广告] 把自己写进最经典的角色扮演游戏中去,这就是同人版魔法门7!(第二版)
samspson
士兵
Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7



UID 192582
精华 0
积分 64
帖子 5
威望 0
现金 17 银币
金币 0 金币
阅读权限 20
注册 2008-10-9
状态 离线
发表于 2008-10-12 02:12  资料  个人空间  短消息 

頂起來 謝謝分享

顶部
[广告] web棋牌市 6.16内测开启
magik
老兵
Rank: 9Rank: 9



UID 190291
精华 0
积分 106
帖子 5
威望 0
现金 23 银币
金币 0 金币
阅读权限 30
注册 2008-9-30
状态 离线
发表于 2008-10-12 12:21  资料  个人空间  短消息 

支持楼主 顶一个

顶部
[广告] 那啥,不回老家结婚的就来DOTA吧!
 



当前时区 GMT+8, 现在时间是 2008-11-22 06:33
沪ICP备06036464号

    本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.5.0 Licensed  © 2001-2007 Comsenz Inc.
Processed in 0.047761 second(s), 12 queries , Gzip enabled

清除 Cookies - 联系我们 - Chinese Webgame BBS 中国网页游戏论坛 - Archiver - WAP