| New file |
| | |
| | | <?php |
| | | include_once "/Common/Logging.php"; |
| | | include_once "/Account/User.php"; |
| | | include_once "/language/lang.php"; |
| | | |
| | | \Logging\CreateLogging("reloadLog.php"); |
| | | $Permission = \User\Permission::P_ReloadConfig; |
| | | |
| | | $alertMsg = ""; |
| | | $channel = $_SESSION['spid']; |
| | | $UserAccount = $_SESSION['UserAccount']; |
| | | $user = new \User\User($UserAccount); |
| | | if (!$user->HavePermission($Permission)) { |
| | | exit; |
| | | } |
| | | |
| | | $serversArray = $user->GetServers(); |
| | | |
| | | // 默认当天 |
| | | $startDate = array_key_exists("startDate", $_POST) ? $_POST["startDate"] : date("Y-m-d"); |
| | | $endDate = array_key_exists("endDate", $_POST) ? $_POST["endDate"] : date("Y-m-d"); |
| | | |
| | | $errorServerInfo = array(); |
| | | $reloadLogInfo = null; |
| | | // echo "_POST:", print_r($_POST, true), "<br/>"; |
| | | if (array_key_exists("submit", $_POST)) { |
| | | $_POST["startDate"] = $startDate; |
| | | $_POST["endDate"] = $endDate; |
| | | $_POST["eventType"] = "ReloadLog"; |
| | | // $_POST["queryAllData"] = "on"; // 设置可查询备份数据 |
| | | \CommFunc\QueryEventData($user, $retInfo); |
| | | // echo "retInfo:", print_r($retInfo, true), "<br/>"; |
| | | |
| | | if (isset($retInfo)) { |
| | | // \Logging\LogInfo("返回查询结果: " . print_r($retInfo, true)); |
| | | // $serverName 可能请求多服,但是是同一台物理服,返回的数据理论上是一样的重复的,所以这里直接按 GroupName 分组统计即可 |
| | | $reloadLogInfo = array(); |
| | | foreach ($retInfo as $serverName => $ret) { |
| | | if (is_array($ret) && $ret["OK"] == 1) { |
| | | // {"GroupName":{"ServerID":{"ReloadType":reloadTime, ...}, ...}, ...} |
| | | foreach ($ret["DRData"] as $GroupName => $serverDict) { |
| | | |
| | | if (!array_key_exists($GroupName, $reloadLogInfo)) { |
| | | $reloadLogInfo[$GroupName] = array(); |
| | | } |
| | | $groupDict = $reloadLogInfo[$GroupName]; |
| | | foreach ($serverDict as $ServerID => $reloadDict) { |
| | | if (!array_key_exists($ServerID, $groupDict)) { |
| | | $groupDict[$ServerID] = $reloadDict; |
| | | } else { |
| | | $serverReloadDict = $groupDict[$ServerID]; |
| | | foreach ($reloadDict as $reloadType => $reloadTime) { |
| | | if (!array_key_exists($reloadType, $serverReloadDict) || $serverReloadDict[$reloadType] < $reloadTime) { |
| | | $serverReloadDict[$reloadType] = $reloadTime; |
| | | } |
| | | } |
| | | $groupDict[$ServerID] = $serverReloadDict; |
| | | } |
| | | } |
| | | $reloadLogInfo[$GroupName] = $groupDict; |
| | | } |
| | | // foreach ($reportInfo as $key => $repOrderInfoDict) { |
| | | // //排序 根据 payCount 倒序排序 SORT_ASC 和 SORT_DESC |
| | | // array_multisort(array_column($repOrderInfoDict, 'payCount'), SORT_DESC, $repOrderInfoDict); |
| | | // $reportInfo[$key] = $repOrderInfoDict; |
| | | // } |
| | | } else { |
| | | $errorServerInfo[$serverName] = $ret; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | ?> |
| | | |
| | | <!DOCTYPE html> |
| | | <html> |
| | | |
| | | <head> |
| | | <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> |
| | | <title><?php echo \Lang\gettext("重读日志"); ?></title> |
| | | <link rel="gettext" type="application/x-po" href="../language/<?php echo \Lang\getLang(); ?>/LC_MESSAGES/<?php echo \Lang\getjspodomain(); ?>.po" /> |
| | | </head> |
| | | |
| | | <body> |
| | | <center> |
| | | <p><b><?php echo \Lang\gettext("重读日志"); ?></b></P> |
| | | </center> |
| | | <form id="reloadLog" action="reloadLog.php" method="post"> |
| | | <?php echo \Lang\gettext("查询时间"); ?>: |
| | | <input type="text" name="startDate" id="startDate" |
| | | onclick="new Calendar().show(this);" readonly value="<?php echo $startDate; ?>" size="8" /> |
| | | ~ |
| | | <input type="text" name="endDate" id="endDate" onclick="new Calendar().show(this);" readonly value="<?php echo $endDate; ?>" size="8" /> |
| | | <input type="submit" name="submit" id="submit" value="<?php echo \Lang\gettext("查询本服"); ?>" onclick="onCurSubmit()" /> |
| | | <hr /> |
| | | <?php |
| | | if (count($errorServerInfo)) { |
| | | echo \Lang\gettext("服务器错误信息") . "<br/>"; |
| | | echo "<font color='red'>"; |
| | | foreach ($errorServerInfo as $serverName => $errInfo) { |
| | | echo $serverName; |
| | | if (is_array($errInfo)) { |
| | | echo " => " . json_encode($errInfo); |
| | | } else { |
| | | echo " => " . $errInfo; |
| | | } |
| | | echo "<br/>"; |
| | | } |
| | | echo "</font>"; |
| | | echo "<hr/>"; |
| | | } |
| | | ?> |
| | | |
| | | <?php |
| | | if (isset($reloadLogInfo)) { |
| | | $alertSeconds = 600; # x秒内的提醒 |
| | | if (count($reloadLogInfo) == 0) { |
| | | echo \Lang\gettext("无记录") . "<br/>"; |
| | | } else { |
| | | echo "<font color=\"red\">"; |
| | | echo $alertSeconds / 60 . "分钟内有维护记录的红字提醒<br/>"; |
| | | echo "注:战斗服务器1分钟内最多只会重读一次,重复请求无效!!!可过会重试或手动操作"; |
| | | echo "</font>"; |
| | | } |
| | | $currentTime = time(); |
| | | foreach ($reloadLogInfo as $GroupName => $groupDict) { |
| | | $caption = "服务器组:【" . $GroupName . "】"; |
| | | echo "<table width=\"75%\" border frame=box rules=all>"; |
| | | echo "<caption>" . $caption . "</caption>"; |
| | | echo "<thead><tr>"; |
| | | echo "<th width=\"100\">ServerID</td>"; |
| | | echo "<th width=\"200\" align='left'> 重启</td>"; |
| | | echo "<th width=\"200\" align='left'> 重读脚本</td>"; |
| | | echo "<th width=\"200\" align='left'> 重读配置</td>"; |
| | | echo "</tr></thead>"; |
| | | $Num = 0; |
| | | foreach ($groupDict as $ServerID => $serverReloadDict) { |
| | | $restartTimeStr = array_key_exists("restart", $serverReloadDict) ? $serverReloadDict["restart"] : ""; |
| | | $scriptTimeStr = array_key_exists("script", $serverReloadDict) ? $serverReloadDict["script"] : ""; |
| | | $configTimeStr = array_key_exists("config", $serverReloadDict) ? $serverReloadDict["config"] : ""; |
| | | |
| | | |
| | | if ($restartTimeStr) { |
| | | $restartTime = strtotime($restartTimeStr); |
| | | $secondsDiff = $currentTime - $restartTime; |
| | | if ($secondsDiff <= $alertSeconds) { |
| | | $restartTimeStr .= " [<font color=\"red\">" . $secondsDiff . "分秒前</font>]"; |
| | | } |
| | | } |
| | | |
| | | if ($scriptTimeStr) { |
| | | $restartTime = strtotime($scriptTimeStr); |
| | | $secondsDiff = $currentTime - $restartTime; |
| | | if ($secondsDiff <= $alertSeconds) { |
| | | $scriptTimeStr .= " [<font color=\"red\">" . $secondsDiff . "秒前</font>]"; |
| | | } |
| | | } |
| | | |
| | | if ($configTimeStr) { |
| | | $restartTime = strtotime($configTimeStr); |
| | | $secondsDiff = $currentTime - $restartTime; |
| | | if ($secondsDiff <= $alertSeconds) { |
| | | $configTimeStr .= " [<font color=\"red\">" . $secondsDiff . "秒前</font>]"; |
| | | } |
| | | } |
| | | |
| | | // <font color="red">注:战斗服务器1分钟内最多只会重读一次,重复请求无效!!!</font> |
| | | |
| | | echo "<tr'>"; |
| | | echo "<td align='center'>" . $ServerID . "</td>"; |
| | | echo "<td align='left'> " . $restartTimeStr . "</td>"; |
| | | echo "<td align='left'> " . $scriptTimeStr . "</td>"; |
| | | echo "<td align='left'> " . $configTimeStr . "</td>"; |
| | | echo "</tr>"; |
| | | } |
| | | echo "</table>"; |
| | | echo "<hr/>"; |
| | | } |
| | | } |
| | | ?> |
| | | <hr /> |
| | | <?php |
| | | include_once "/Common/SelectServer.php"; |
| | | ?> |
| | | <input type="submit" name="submit" id="submit" value="<?php echo \Lang\gettext("查询多服"); ?>" onclick="return checkMultiSubmit()" /> |
| | | <br /> |
| | | <br /> |
| | | </form> |
| | | </body> |
| | | <script type='text/javascript' src='/language/gettext.js'></script> |
| | | <script type='text/javascript' src="/js/calendar.js"></script> |
| | | <script type='text/javascript' src="/js/common.js"></script> |
| | | <script type='text/javascript' src="/Common/selectserver.js"></script> |
| | | <script type="text/javascript"> |
| | | function onCurSubmit() { |
| | | document.getElementById("MultiServer").value = 0; |
| | | return true; |
| | | } |
| | | |
| | | function checkMultiSubmit() { |
| | | |
| | | if (!checkHaveServerSelected()) { |
| | | return false; |
| | | } |
| | | |
| | | if (!setSubmitQuerying("submit")) { |
| | | return false; |
| | | } |
| | | |
| | | return true; |
| | | } |
| | | </script> |
| | | |
| | | </html> |