首页 > 其他分享 >destoon关于archiver归档的性能优化

destoon关于archiver归档的性能优化

时间:2023-09-17 21:57:27浏览次数:55  
标签:destoon addtime db mid month archiver 归档 table linkurl

  今天在处理一个项目时候发现archiver单个模块归档超过百万数据,打开速度就特慢,所以打开archiver下index.php文件进行分析,发现有句sql作怪

$result = $db->query("SELECT title,linkurl,addtime FROM {$table} WHERE $condition ORDER BY addtime DESC LIMIT $offset,$pagesize");

  因为这sql就是查询,没有用到索引。我们思路要先查询itemid然后再用itemid进行查询,这样速度就快了。

代码如下:

<?php
define('DT_REWRITE', true);
require '../common.inc.php';
$EXT['archiver_enable'] or dheader(DT_PATH);
//$DT_BOT or dheader(DT_PATH);
$N = $M = $T = array();
$mid or $mid = 5;
$vmid = $list = 0;
foreach($MODULE as $k=>$v) {
	if(!$v['islink'] && $v['ismenu'] && $v['moduleid'] > 4) {
		if($k == $mid) $vmid = 1;
		$v['url'] = $DT['rewrite'] ? rewrite('index.php?mid='.$k) : '?mid-'.$k.'.html';
		$N[] = $v;
	}
}
$vmid or $mid = $N[0]['moduleid'];
$table = get_table($mid);
$t = $db->get_one("SELECT MIN(addtime) AS mintime,MAX(addtime) AS maxtime FROM {$table}", 'CACHE');
$fromtime = $t['mintime'];
$fromyear = timetodate($fromtime, 'Y');
if($fromyear < 1990) $fromyear = 1990;
$frommonth = timetodate($fromtime, 'n');
$totime = $t['maxtime'] > $DT_TIME ? $DT_TIME : $t['maxtime'];
$toyear = timetodate($totime, 'Y');
$tomonth = timetodate($totime, 'n');
for($i = $toyear; $i >= $fromyear; $i--) {
	for($j = ($i == $toyear ? $tomonth : 12); $j >= ($i == $fromyear ? $frommonth : 1); $j--) {
		$r = array();
		$r['title'] = $MODULE[$mid]['name'].$i.'年'.($j < 10 ? '0' : '').$j.'月归档';
		$r['month'] = $i.($j < 10 ? '0' : '').$j;
		$r['url'] = $DT['rewrite'] ? rewrite('index.php?mid='.$mid.'&month='.$r['month']) : '?mid-'.$mid.'-month-'.$r['month'].'.html';
		$M[$r['month']] = $r;
	}
}
$head_title = $MODULE[$mid]['name'].'归档';
if(isset($month) && isset($M[$month])) {
	$list = 1;
	$y = substr($month, 0, 4);
	$m = substr($month, 4, 2);
	$ym = $y.'-'.$m;
	$t = timetodate(datetotime($ym.'-01'), 't');
	$ftime = datetotime($ym.'-01 00:00:00');
	$ttime = datetotime($ym.'-'.$t.' 23:59:59');
	$condition = "addtime>$ftime AND addtime<$ttime";	
	$num = $db->count($table, $condition, $CFG['db_expires']);
	$demo_url = $DT['rewrite'] ? rewrite($MODULE[1]['linkurl'].'archiver/index.php?mid='.$mid.'&month='.$month.'&page={destoon_page}') : '?mid-'.$mid.'-month-'.$month.'-page-{destoon_page}.html';
	$pages = pages($num, $page, $pagesize, $demo_url);
	$tmp = explode('<input type="text"', $pages);
	$pages = $tmp[0];
	if($num) {
		//优化查询速度
		//$result = $db->query("SELECT title,linkurl,addtime FROM {$table} WHERE $condition ORDER BY addtime DESC LIMIT $offset,$pagesize");
		 $reitemid = $db->query("SELECT itemid FROM {$table} WHERE $condition ORDER BY addtime DESC LIMIT $offset,$pagesize");
		 //echo "SELECT itemid FROM {$table} WHERE $condition ORDER BY addtime DESC LIMIT $offset,$pagesize";
         while($rid = $db->fetch_array($reitemid)) {
          $getid.=$rid['itemid'].",";
		 }
          $getid=mb_substr($getid,0,-1);

		//判断是否在里面
		$result=$db->query("SELECT title,linkurl,addtime FROM {$table} WHERE itemid in ($getid)");
		while($r = $db->fetch_array($result)) {
			$r['adddate'] = timetodate($r['addtime'], 5);
			if(strpos($r['linkurl'], '://') === false) $r['linkurl'] = $MODULE[$mid]['linkurl'].$r['linkurl'];
			$T[] = $r;
		}
	}
	$head_title = $MODULE[$mid]['name'].$y.'年'.$m.'月归档'.($page > 1 ? '第'.$page.'页' : '');
}
include template('archiver', 'extend');
?>

  演示地址:工作范文2023年09月归档_醉学网 (nongpin88.com)

标签:destoon,addtime,db,mid,month,archiver,归档,table,linkurl
From: https://www.cnblogs.com/68xi/p/17709902.html

相关文章

  • destoon自定义一个archiver内容文档
     在archiver目录建立以下代码:<?phpdefine('DT_REWRITE',true);require'../common.inc.php';$EXT['archiver_enable']ordheader(DT_PATH);//$DT_BOTordheader(DT_PATH);$N=$M=$T=array();$midor$mid=5;$vmid=$list=0;......
  • 软件开发中的资料整理与归档,软件产品开发文档合集
    [引言]本文旨在提供一份标准的软件开发文档模板,以便记录软件开发的全过程。该模板适用于各种类型的软件开发项目,包括Web应用程序、移动应用程序和桌面应用程序等。本文档将介绍软件开发的引言、概述、需求分析、设计、测试、维护以及总结等方面,帮助您撰写一份完整、清晰且易于理......
  • destoon根据标题删除重复数据
    因为采集数据比较庞大,难免出现重复数据,所以写了一个根据标题进行删除重复数据的mysql命令,需要的朋友可以使用。DELETEfromdestoon_article_36where`title`in(SELECT*from(SELECT`title`FROMdestoon_article_36GROUPBY`title`HAVINGCOUNT(1)>1)tmp2)......
  • mysql 开启cdc归档日志
    1、介绍mysql开启归档只需要在mysql的 my.ini 中添加几个配置即可(适用版本如下:)2、说明如下:#配置二进制日志,下面的路径logs文件夹需要提前建好log-bin=E:/mariadb-10.4.20-winx64/logs/mysql-bin.log#设置最大存储空间max-binlog-size=50000M#指定服务idser......
  • 20230619 Java核心技术(Java 17)(原书第12版)【归档】
    介绍版本Java版本:17说明关于图形相关的章节全部跳过,部分不常见不常用的也跳过书中内容有些确实全面,但是要注意也有些重要的部分没有涉及,例如NIO读书只是概览,掌握知识体系更进一步还要通过看代码深入掌握目录卷1基础知识1.Java程序设计概述2.Java编程环境3.......
  • 【MySQL 8.0】通过pt-archiver实现表的历史数据归档
    (root@node02)>setgloballocal_infile=on;QueryOK,0rowsaffected(0.00sec)(root@node02)>createtablecustomer_jplikecustomer;QueryOK,0rowsaffected(0.20sec)(root@node01)>setgloballocal_infile=on;QueryOK,0rowsaffected......
  • destoon8.0自媒体类型综合资讯门户模板
     随着时代发展,自媒体资讯适合当前的互联网情形。呕心沥血开发的一套自媒体综合门户网站模板,本模板采用纯手写开发,带会员中心。首页,列表页,内容页,搜索页面精心编写,非常大气,并配移动端。注意:模板目前只用了资讯模块,会员模块,其他模块都禁用了。特色:1、非常适合做资讯门户站。2、首页,......
  • 全站tag列表 文章归档 友情链接
    全站tag列表 {w:tagfield="id,tag,total"limit="20"}{loop$data$v}<li><ahref="{tag_url($v['id'])}"target="_blank">{$v[tag]}({$v[total]})</a></li>{/loop} 文章归档{w:content_archives......
  • oracle归档日志暴增原因分析,Oracle归档日志满导致数据库性能异常慢 转发 https://b
    ============= oracle数据库archivelog暴增分析====================前言归档量突然增长到981G/天,导致归档目录使用率告警归档日志量异常暴增会导致磁盘空间爆满,数据库异常1、归档日志量统计SELECTTRUNC(FIRST_TIME)"TIME",SUM(BLOCK_SIZE*BLOCKS)/1024/1024/102......
  • 神通数据库根据归档日志恢复数据
    1、执行这个sql语句;CREATETABLET_TMPASSELECTversions_xidXID,versions_startscnSTART_SCN,versions_starttimeSTART_TIME,versions_endscnEND_SCN,versions_endtimeEND_TIME,versions_operationOPERATION,IDFROMTJ_ARCH_GC.T_AR_FPDA_FILEVERSIONSBETWEEN......