destoon关于archiver归档的性能优化
今天在处理一个项目时候发现archiver单个模块归档超过百万数据,打开速度就特慢,所以打开archiver下index.php文件进行分析,发现有句sql作怪
1
|
$result = $db ->query( "SELECT title,linkurl,addtime FROM {$table} WHERE $condition ORDER BY addtime DESC LIMIT $offset,$pagesize" ); |
因为这sql就是查询,没有用到索引。我们思路要先查询itemid然后再用itemid进行查询,这样速度就快了。
代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
<?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' ); ?> |
演示地址:战争指挥官小米手游v8.5.1 安卓版-9335游戏网
destoon关于archiver归档的性能优化的更多相关文章
- SQL性能优化
引言: 以前在面试的过程中,总有面试官问道:你做过sql性能优化吗?对此,我的答复是没有.一次没有不是自己的错误,两次也不是,但如果是多次呢?今天痛下决心,把有关sql性能优化的相关知识总结一下,以便 ...
- 【转载】我眼中的Oracle性能优化
我眼中的Oracle性能优化 大家对于一个业务系统的运行关心有如下几个方面:功能性.稳定性.效率.安全性.而一个系统的性能有包含了网络性能.应用性能.中间件性能.数据库性能等等. 今天从数据库性能的角 ...
- 让DB2跑得更快——DB2内部解析与性能优化
让DB2跑得更快——DB2内部解析与性能优化 (DB2数据库领域的精彩强音,DB2技巧精髓的热心分享,资深数据库专家牛新庄.干毅民.成孜论.唐志刚联袂推荐!) 洪烨著 2013年10月出版 定价:7 ...
- 我眼中的 Oracle 性能优化
恒生技术之眼 作者 林景忠 大家对于一个业务系统的运行关心有如下几个方面:功能性.稳定性.效率.安全性.而一个系统的性能有包含了网络性能.应用性能.中间件性能.数据库性能等等. 今天从数据库性能的角度 ...
- oracle性能优化之awr分析
oracle性能优化之awr分析 作者:bingjava 最近某证券公司系统在业务期间系统运行缓慢,初步排查怀疑是数据库存在性能问题,因此导出了oracle的awr报告进行分析,在此进行记录. 导致系 ...
- Oracle12c 性能优化攻略:攻略目录表
注:本文来源于 [美] Sam Alapati , Darl Kuhn , Bill Padfield 著 朱浩波 翻译 <Oracle Database 12C 性能优化攻略> ...
- (转)Db2 数据库性能优化中,十个共性问题及难点的处理经验
(转)https://mp.weixin.qq.com/s?__biz=MjM5NTk0MTM1Mw==&mid=2650629396&idx=1&sn=3ec17927b3d ...
- Linux性能优化之CPU优化(一)
前言 何为性能优化?个人认为,性能优化是为了提高应用程序或系统能力为目的.那么如何才能实现对应用程序的性能调优呢?这里很设计到很多的内容,包括Linux内核.CPU架构以及Linux内核对资源的分配以 ...
- PHP归档phar性能測试
PHP自从5.3后新增PHAR归档,Phar 归档的概念来自 Java™ 技术的 JAR 归档,它同意使用单个文件打包应用程序.这个文件里包括运行应用程序所需的全部东西.该文件不同于单个可运行文件,后 ...
- Java 后台性能优化简要
业务系统性能优化的前提时观察和诊断.观察工具例如以下:前端优化工具:YSlow页面响应时间:Firebug方法对应时间:btraceGC日志分析:JVM 启动參数数据库优化:慢查询系统资源调用:监控 ...
随机推荐
- Aerospike架构设计与实现细节
目录 1. 引言 2. 技术原理及概念 2.1. 基本概念解释 2.2. 技术原理介绍 2.3. 相关技术比较 3. 实现步骤与流程 3.1. 准备工作:环境配置与依赖安装 3.2. 核心模块实现 3 ...
- 一招带你吃透MySQL高级
MySQL8高级之架构和优化 让 第01章 Linux下MySQL的安装与使用 1.安装 1.1.docker安装 docker run -d \ -p 3309:3306 \ -v /atguigu ...
- 力扣 (LeetCode)算法入门——Day1
704. 二分查找 题目:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1. ...
- 基于.Net Core实现的飞书文档一键导出服务(支持多系统)
feishu-doc-export 一个支持Windows.Mac.Linux系统的飞书文档一键导出服务,仅需一行命令即可将飞书知识库的全部文档同步到本地电脑.导出速度嘎嘎快,实测700多个文档导出只 ...
- MiniNK WEB 选拔题 by F12
Start 除了梦想外一无所有的我们,将会和蔑视与困境做最后的斗争,这是最后一舞 N0wayBack 联合战队成立以来一直致力于信息安全技术的研究,作为联合战队活跃在各大 CTF (信息安全竞赛)赛事 ...
- MapReduce实现TopN的效果
1.背景 最近在学习Hadoop的MapReduce,此处记录一下如何实现 TopN 的效果,以及在MapReduce中如何实现 自定义分组. 2.需求 我们有一份数据,数据中存在如下3个字段,订单编 ...
- Java List集合根据某字段去重
去重方法 单个字段为条件去重 /** * 单字段去重 * @param jackpotList1 新集合 * @param jackpotList 需要去重的集合 * @return */ priva ...
- pe文件格式图片
- VUE3、ElementPlus 重构若依vue2 表单构建功能
Vue3 + ElementPlus + Vite 重构 若依Vue2 表单构建功能 若依官方的Vue3 版本发布已经有段时间了,就是这个表单构建功能一直没有安排计划去适配到Vue3! 前段时间公司需 ...
- python入门,一篇就够了
python规范 函数必须写注释:文档注释格式'''注释内容''' 参数中的等号两边不要用空格 相邻函数用两个空行隔开 小写 + 下划线 函数名 模块名 实例名 驼峰法 类名 tips # 一行代码太 ...