|
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="<?php echo $cfg_soft_lang; ?>">
- <title>系统概况</title>
- <meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no">
- <base target="_self">
- <link rel="stylesheet" href="../static/css/bootstrap.min.css">
- <link rel="stylesheet" href="../static/font-awesome/css/font-awesome.min.css">
- <link rel="stylesheet" href="css/base.css">
- <link rel="stylesheet" href="css/indexbody.css">
- <script src="../static/js/jquery.js"></script>
- <script src="../static/js/bootstrap.bundle.js"></script>
- <script src="../static/js/webajax.js"></script>
- <script src="../static/js/chart.min.js"></script>
- <script src="js/indexbody.js"></script>
- <script src="js/main.js"></script>
- <style>
- .row{display:flex;flex-wrap:wrap}
- .row>[class*='col-']{display:flex;flex-direction:column}
- .table{margin-bottom:0}
- .stattable{width: 100%;}
- table.stattable td {
- padding: 0 5px;
- height: 25px;
- line-height: 25px;
- border-bottom: 1px solid #f0f0f0;
- font-size: 12px;
- text-align: right;
- }
- table.stattable td.today {
- font-size: 12px;
- color: #000;
- height: 25px;
- line-height: 25px;
- font-weight: 700;
- }
- </style>
- </head>
- <body>
- <div class="container-fluid">
- <div class="row">
- <div id="__testEvn" class="col-md-12"></div>
- <div class="col-md-12 mt-3">
- <div class="card">
- <div class="card-header">流量统计 <a title="点击查看流量统计图" href="#statChart"><i class="fa fa-line-chart" aria-hidden="true"></i></a></div>
- <div class="card-body">
- <table class="stattable">
- <tbody>
- <tr class="title">
- <td width="10%"></td>
- <td width="20%">浏览次数(PV)</td>
- <td width="20%">独立访客(UV)</td>
- <td width="20%">IP</td>
- <td width="18%" >访问次数</td>
- </tr>
- <tr class="bg-white">
- <td class="today">今日</td>
- <td class="today" id="today_pv">...</td>
- <td class="today" id="today_uv">...</td>
- <td class="today" id="today_ip">...</td>
- <td class="today" id="today_vv">...</td>
- </tr>
- <tr class="bg-white">
- <td class="">昨日</td>
- <td id="yestoday_pv">...</td>
- <td id="yestoday_uv">...</td>
- <td id="yestoday_ip">...</td>
- <td id="yestoday_vv">...</td>
- </tr>
- <tr class="bg-white grey9 hide" style="display: table-row;">
- <td class="">历史累计</td>
- <td id="total_pv">...</td>
- <td id="total_uv">...</td>
- <td id="total_ip">...</td>
- <td id="total_vv">...</td>
- </tr>
- </tbody>
- </table>
- </div>
- </div>
- </div>
- <div class="col-md-6 mt-3 updatenews">
- <div class="card">
- <div class="card-header">更新消息</div>
- <div class="card-body">
- <div id="updateinfos">
- <?php
- echo "<div class='updatedvt py-3'>";
- echo "安全操作:<a href='sys_data.php' class='btn btn-success btn-sm'>备份还原</a><a href='sys_safetest.php' class='btn btn-success btn-sm'>病毒扫描</a><a href='sys_repair.php' class='btn btn-success btn-sm'>错误修复</a></div>";
- echo "<iframe name='stafrm' src='{$offUrl}&uptime={$oktime}' frameborder='0' id='stafrm' width='98%' height='100'></iframe>";
- ?>
- </div>
- </div>
- </div>
- </div>
- <div class="col-md-6 mt-3">
- <div class="card">
- <div class="card-header">版本授权</div>
- <div class="card-body" id="_systeminfo">正在载入</div>
- </div>
- </div>
- <div class="col-md-6 mt-3">
- <div class="card">
- <div class="card-header">信息统计</div>
- <div class="card-body">
- <dd id='listCount'>正在载入</dd>
- </div>
- </div>
- </div>
- <div class="col-md-6 mt-3">
- <div class="card">
- <div class="card-header">基本信息</div>
- <div class="card-body">
- <table width="98%" class="table table-borderless">
- <tr>
- <td width="50%">操作系统:<?php echo PHP_OS; ?></td>
- <td>Web服务器:<?php echo $_SERVER['SERVER_SOFTWARE']; ?></td>
- </tr>
- <tr>
- <td>网站域名:<a href="<?php echo $cfg_basehost; ?>" target="_blank"><?php echo $_SERVER['SERVER_NAME']; ?></a></td>
- <td>网站地址:<?php echo gethostbyname($_SERVER['SERVER_NAME']); ?></td>
- </tr>
- <tr>
- <td>您的级别:<?php if($cuserLogin->getUserType()==10) {echo "总管理员";} else if($cuserLogin->getUserType()==5) {echo "频道总编";} else {echo "信息采集员或其它管理员";}?></td>
- <td>版本信息:<?php echo $cfg_soft_enname; ?></td>
- </tr>
- <tr>
- <td>PHP版本:<?php echo @phpversion(); ?></td>
- <td>GD版本:<?php echo @gdversion(); ?></td>
- </tr>
- <tr>
- <td>上传文件:<?php echo ini_get("post_max_size") ?></td>
- <td>远程连接:<?php echo ini_get("allow_url_fopen") ? '允许':'不允许'; ?></td>
- </tr>
- </table>
- </div>
- </div>
- </div>
- <div class="col-md-6 mt-3">
- <div class="card">
- <div class="card-header">最新文档</div>
- <div class="card-body">
- <table width="100%" class="table table-borderless">
- <?php
- $query = "SELECT arc.id, arc.arcrank, arc.title, arc.typeid, arc.pubdate, arc.channel, ch.editcon, tp.typename FROM `#@__archives` arc LEFT JOIN `#@__channeltype` ch ON ch.id = arc.channel LEFT JOIN `#@__arctype` tp ON arc.typeid=tp.id WHERE arc.arcrank<>-2 ORDER BY arc.id DESC LIMIT 0,5";
- $arcArr = array();
- $dsql->Execute('m', $query);
- while($row = $dsql->GetArray('m'))
- {
- $arcArr[] = $row;
- }
- ?>
- <?php
- if(count($arcArr) > 1)
- {
- foreach($arcArr as $row)
- {
- if(trim($row['editcon'])==''){
- $row['editcon'] = 'archives_edit.php';
- }
- $rowarcrank = $row['arcrank']==-1? "<small>[未审核]</small>":"";
- $pubdate = GetDateMk($row['pubdate']);
- echo "<tr><td><a href='{$row['editcon']}?aid={$row['id']}&channelid={$row['channel']}'>{$row['title']}</a>{$rowarcrank}</td><td width='90'>{$pubdate}</td></tr>";
- }
- } else {
- ?>
- <tr><td class="nline" colspan="2">暂无文档</td></tr>
- <?php
- }
- ?>
- </table>
- </div>
- </div>
- </div>
- <div class="col-md-6 mt-3">
- <div class="card">
- <div class="card-header"><a name="statChart">流量统计图</a></div>
- <div class="card-body">
- <canvas id="statChart" style="height: 260px;"></canvas>
- </div>
- </div>
- </div>
- </div>
- </div>
- <div class="footer mt-2">
- <div id="loaddiv" style="display:none">
- <p align="center"><img src="images/loadinglit.gif">请稍后,正在下载更新文件列表</p>
- </div>
- <div id="editTab">
- <span id="editTabBody">请稍候,正在载入</span>
- </div>
- <div id="addTab">
- <form name="addform" action="index_body.php">
- <input type="hidden" name="dopost" value="addnew">
- <table width="100%" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td height="30" colspan="3" background="images/tbg.gif">
- <div style="float:left;margin-left:10px">增加快捷操作项</div>
- <div style="float:right;padding:2px 10px 0 0">
- <a href="javascript:CloseTab('addTab')"><img src="images/close.gif"></a>
- </div>
- </td>
- </tr>
- <tr>
- <td colspan="2" style="height:10px;border-top:1px solid #8DA659"></td>
- </tr>
- <tr>
- <td width="22%" height="26" align="right">链接标题:</td>
- <td width="78%"><input name="title" type="text" class="pubinputs" style="margin-bottom:10px;width:260px"></td>
- </tr>
- <tr>
- <td width="22%" height="26" align="right">链接网址:</td>
- <td width="78%"><input name="link" type="text" class="pubinputs" style="width:260px"></td>
- </tr>
- <tr>
- <td height="36"></td>
- <td><input type="submit" name="Submit" value="保存项目" class="np coolbg"></td>
- </tr>
- </table>
- </form>
- </div>
- </div>
- <script>
- $(function(){
- $.get("index_testenv.php", function (data){
- if (data !== ''){
- $("#__testEvn").html(data);
- }
- });
- });
- </script>
- <script>
- Date.prototype.Format = function (fmt) { //author: meizz
- var o = {
- "M+": this.getMonth() + 1, //月份
- "d+": this.getDate(), //日
- "h+": this.getHours(), //小时
- "m+": this.getMinutes(), //分
- "s+": this.getSeconds(), //秒
- "q+": Math.floor((this.getMonth() + 3) / 3), //季度
- "S": this.getMilliseconds() //毫秒
- };
- if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
- for (var k in o)
- if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
- return fmt;
- }
- var dedebizInfo;
- function ViewDedeBIZ(){
- console.log(dedebizInfo);
- ShowMsg(`
- <table width="100%" class="table table-borderless">
- <tbody>
- <tr>
- <td class="nline" style="text-align:left">版本号:</td>
- <td class="nline" style="text-align:left">V${dedebizInfo.result.server_version}</td>
- </tr>
- <tr>
- <td class="nline" style="text-align:left">运行时间:</td>
- <td class="nline" style="text-align:left">${dedebizInfo.result.server_run_time}</td>
- </tr>
- <tr>
- <td class="nline" style="text-align:left">服务器系统:</td>
- <td class="nline" style="text-align:left">${dedebizInfo.result.server_goos}(${dedebizInfo.result.server_goarch})</td>
- </tr>
- <tr>
- <td class="nline" style="text-align:left">内存占用:</td>
- <td class="nline" style="text-align:left">${dedebizInfo.result.server_memory_usage}%</td>
- </tr>
- </tbody>
- </table>
- `);
- }
- //加载服务信息
- function LoadServer(){
- $.get("index_body.php?dopost=system_info", function(data){
- let rsp = JSON.parse(data);
- if (rsp.code === 200){
- let infoStr = `<table width="100%" class="table table-borderless"><tbody>`;
- if (typeof rsp.result.domain !== "undefined"){
- infoStr += `
- <tr>
- <td class="nline" style="text-align:left">授权域名:</td>
- <td class="nline" style="text-align:left">${rsp.result.domain} <a href="<?php echo $cfg_biz_dedebizUrl;?>/auth/?domain=${rsp.result.domain}" class="btn btn-success btn-sm">查看</a></td>
- </tr>
- `;
- }
- if (typeof rsp.result.title !== "undefined"){
- infoStr += `
- <tr>
- <td class="nline" style="text-align:left">站点名称:</td>
- <td class="nline" style="text-align:left">${rsp.result.title}</td>
- </tr>
- `;
- }
- if (typeof rsp.result.stype !== "undefined"){
- infoStr += `
- <tr>
- <td class="nline" style="text-align:left">站点类型:</td>
- <td class="nline" style="text-align:left">${rsp.result.stype}</td>
- </tr>
- `;
- }
- if (typeof rsp.result.auth_version !== "undefined" && typeof rsp.result.auth_at !== "undefined"){
- infoStr += `
- <tr>
- <td class="nline" style="text-align:left">授权版本:</td>
- <td class="nline" style="text-align:left">V${rsp.result.auth_version}.x.x(时间:${rsp.result.auth_at})</td>
- </tr>
- `;
- }
- if (rsp.result.core === null || rsp.result.core.code != 200){
- //下面是DedeBIZ Core组件信息
- infoStr += `
- <tr>
- <td class="nline" style="text-align:left">版本组件:</td>
- <td class="nline" style="text-align:left"><a href="<?php echo $cfg_biz_dedebizUrl;?>/start?code=-1008" target="_blank" class="btn btn-danger btn-sm">如何启动组件</a></td>
- </tr>
- `;
- } else {
- dedebizInfo = JSON.parse(rsp.result.core.data);
- infoStr += `
- <tr>
- <td class="nline" style="text-align:left">版本组件:</td>
- <td class="nline" style="text-align:left"><a href="javascript:ViewDedeBIZ()" class="btn btn-success btn-sm">查看组件信息</a></td>
- </tr>
- `;
- }
- infoStr += "</tbody></table>";
- $("#_systeminfo").html(infoStr);
- } else {
- $("#_systeminfo").html(`
- <div class="py-1">尚未启动商业版服务,原因:${rsp.msg}</div>
- <div class="py-1">目前是社区版开源免费,但商业版可以提高性能,支付功能,小程序等</div>
- <div class="py-1"><a href="<?php echo $cfg_biz_dedebizUrl;?>/start?code=${rsp.code}" target="_blank" class="btn btn-danger btn-sm">开启商业版</a></div>
- `);
- }
- });
- }
- function LoadStat() {
- $.get("index_body.php?dopost=get_statistics", function(data){
- let rsp = JSON.parse(data);
- if (rsp.code == 200) {
- var tpv = parseInt(rsp.result.pv);
- var tuv = parseInt(rsp.result.uv);
- var tip = parseInt(rsp.result.ip);
- var tvv = parseInt(rsp.result.vv);
- $("#today_pv").html(tpv);
- $("#today_uv").html(tuv);
- $("#today_ip").html(tip);
- $("#today_vv").html(tvv);
-
- $.get("index_body.php?dopost=get_statistics&sdate=-1", function(data){
- let rsp = JSON.parse(data);
- if (rsp.code == 200) {
- $("#total_pv").html(parseInt(rsp.result.pv)+tpv);
- $("#total_uv").html(parseInt(rsp.result.uv)+tuv);
- $("#total_ip").html(parseInt(rsp.result.ip)+tip);
- $("#total_vv").html(parseInt(rsp.result.vv)+tvv);
- }
- });
- }
- });
-
- var d = new Date();
- d.setDate(d.getDate() - 1);
- var s = d.Format("yyyy-MM-dd");
- s = s.replaceAll("-","");
- $.get("index_body.php?dopost=get_statistics&sdate="+s, function(data){
- let rsp = JSON.parse(data);
- if (rsp.code == 200) {
- $("#yestoday_pv").html(rsp.result.pv);
- $("#yestoday_uv").html(rsp.result.uv);
- $("#yestoday_ip").html(rsp.result.ip);
- $("#yestoday_vv").html(rsp.result.vv);
- }
- });
- }
-
- async function LoadStatChart() {
- const ctx = document.getElementById('statChart').getContext('2d');
- let labels = [];
- let pvs = [];
- let ips = [];
- let uvs = [];
- let vvs = [];
- for (let i = 15; i > 0; i--) {
- var d = new Date();
- d.setDate(d.getDate() - i);
- var s = d.Format("yyyy-MM-dd");
- labels.push(d.Format("MM-dd"));
- s = s.replaceAll("-","");
- let resp = await fetch("index_body.php?dopost=get_statistics&sdate="+s);
- let data = await resp.json();
- if (data.code == 200) {
- pvs.push(typeof data.result.pv=="undefined"? 0 : data.result.pv);
- ips.push(typeof data.result.ip=="undefined"? 0 : data.result.ip);
- uvs.push(typeof data.result.uv=="undefined"? 0 : data.result.uv);
- vvs.push(typeof data.result.vv=="undefined"? 0 : data.result.vv);
- }
- }
-
- console.log(pvs);
- console.log(ips);
- console.log(uvs);
- console.log(vvs);
-
- const myChart = new Chart(ctx, {
- type: 'line',
- options: {
- responsive: true,
- plugins: {
- legend: {
- position: 'top',
- },
- title: {
- display: true,
- text: '<?php echo $cfg_webname; ?>流量统计图'
- }
- }
- },
- data: {
- labels: labels,
- datasets: [{
- label: 'IP',
- data: ips,
- borderColor: 'rgba(255, 99, 132, 1)',
- backgroundColor :'rgba(255, 99, 132, 0.2)',
- borderWidth: 1
- },
- {
- label: 'PV',
- data: pvs,
- borderColor: 'rgba(54, 162, 235, 1)',
- backgroundColor :'rgba(54, 162, 235, 0.2)',
- borderWidth: 1
- },{
- label: 'UV',
- data: uvs,
- borderColor: 'rgba(255, 206, 86, 1)',
- backgroundColor: 'rgba(255, 206, 86, 0.2)',
- borderWidth: 1
- },{
- label: '访问次数',
- data: vvs,
- borderColor: 'rgba(75, 192, 192, 1)',
- backgroundColor: 'rgba(75, 192, 192, 0.2)',
- borderWidth: 1
- }
- ]
- },
- });
- }
-
- $(document).ready(function(){
- LoadServer();
- LoadStat();
- LoadStatChart();
- setInterval(function(){
- LoadServer();
- }, 60000)
- });
- </script>
- </body>
- </html>
|