php小代码---从慢日志文件分离出日志记录并存放于excel文件中

<?php

header("Content-type:text/html; charset=UTF-8");
ini_set(‘max_execution_time‘, ‘10000‘);
ini_set(‘memory_limit‘,‘1024M‘);

function dealslowContent($content) {
    $data = array();
    preg_match(‘/#\[email protected]:(.+)\n#\sThread_id/‘, $content, $match);
    $data[‘[email protected]‘] = $match[1];
    preg_match(‘/#\sQuery_time:\s(.+)\sLock_time/‘, $content, $match);
    $data[‘Query_time‘] = $match[1];
    preg_match(‘/\sLock_time:\s(.+)\sRows_sent/‘, $content, $match);
    $data[‘Lock_time‘] = $match[1];

    preg_match(‘/\sRows_examined:\s(.+)\sRows_affected/‘, $content, $match);
    $data[‘Rows_examined‘] = $match[1];
    preg_match(‘/\sRows_read:\s(.+)\n#\sBytes_sent/‘, $content, $match);
    $data[‘Rows_read‘] = $match[1];

    preg_match(‘/timestamp=(\d+);\s/‘, $content, $match);
    $data[‘timestamp‘] = $match[1];

    preg_match(‘/#\sBytes_sent:\s(.+)\sSET/‘, $content, $match);
    $data[‘Bytes_sent‘] = $match[1];

    $sqlPos = strpos($content, ‘;‘);
    $data[‘sql‘] = substr($content, $sqlPos + 1, strlen($content));
    return $data;
}

$slowData = array();

$handle = fopen(‘mysql-slow.log.2‘, ‘r‘);
$content = ‘‘;
$middlerCha = ‘‘;
$identifier = ‘# [email protected]‘;
$identifierLength = strlen($identifier);
while (!feof($handle)) {
    $oneTakeCha = fread($handle, 1);
    if ($oneTakeCha === ‘#‘) {
        $middlerCha = ‘#‘ . fread($handle, $identifierLength - 1);
        if ($middlerCha === $identifier) {
            if ($content != ‘‘) {
                $slowData[] = dealslowContent($content);
                $content = $middlerCha;
            } else {
                $content = $middlerCha;
            }
        } else {
            $content.=$middlerCha;
        }
    } else {
        $content.= $oneTakeCha;
    }
}
$slowData[] = dealslowContent($content);
fclose($handle);

include ‘libraries/PHPExcel.php‘;
include ‘libraries/PHPExcel/IOFactory.php‘;
$objPHPExcel = new PHPExcel();
$objPHPExcel->getProperties()->setTitle("export")->setDescription("none");
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->getColumnDimension(‘A‘)->setWidth(20);
$objPHPExcel->getActiveSheet()->getColumnDimension(‘B‘)->setWidth(25);
$objPHPExcel->getActiveSheet()->getColumnDimension(‘C‘)->setWidth(25);
$objPHPExcel->getActiveSheet()->getColumnDimension(‘D‘)->setWidth(25);
$objPHPExcel->getActiveSheet()->getColumnDimension(‘E‘)->setWidth(25);
$objPHPExcel->getActiveSheet()->getColumnDimension(‘F‘)->setWidth(15);
$objPHPExcel->getActiveSheet()->getColumnDimension(‘G‘)->setWidth(15);
$objPHPExcel->getActiveSheet()->getColumnDimension(‘H‘)->setWidth(15);

$titlearray = array(
    "主机信息" => ‘[email protected]‘, "查询时间" => ‘Query_time‘, "锁表时间" => ‘Lock_time‘
    , "查询时检查行数" => ‘Rows_examined‘, "读取行数" => ‘Rows_read‘, "时间" => ‘timestamp‘,
    "发送字节数" => ‘Bytes_sent‘, "执行的sql" => ‘sql‘
);

$col = 0;
foreach ($titlearray as $key => $title) {
    $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, 1, $key);
    $col++;
}

$j = 2;
foreach ($slowData as $key => $sd) {
    $col = 0;
    foreach ($titlearray as $key2 => $title) {
        $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, $j, $sd[$title]);
        $col++;
    }
    $j++;
}

$objPHPExcel->setActiveSheetIndex(0);
$objWriter = IOFactory::createWriter($objPHPExcel, ‘Excel5‘);
// Sending headers to force the user to download the file
header(‘Content-Type: application/vnd.ms-excel‘);
header(‘Content-Disposition: attachment;filename="slowsql.xls"‘);
header(‘Cache-Control: max-age=0‘);
$objWriter->save(‘php://output‘);
时间: 2024-10-12 06:20:26

php小代码---从慢日志文件分离出日志记录并存放于excel文件中的相关文章

【个人使用.Net类库】(3)Excel文件操作类(基于NPOI)

Web开发工作中经常要根据业务的需要生成对应的报表.经常采用的方法如下: 将DataTable导出至Excel文件; 读取模板Excel文件; 修改模板Excel文件对应的内容. 因此,便想到封装一个基于NPOI的Excel操作类(至于为什么不用Excel组件,那是因为Excel组件效率低且必须安装Office),所完成的功能大致如上所示,这样平时的报表开发效率就比原来高效很多. 首先是DataTable导出至Excel文件,代码关键部分有注释说明,具体代码如下所示: /// <summary>

C#项目中操作Excel文件——使用NPOI库

转载自:http://blog.csdn.net/dcrmg/article/details/52356236# 感谢-牧野- 实际C#项目中经常会涉及到需要对本地Excel文件进行操作,特别是一些包含数据记录.分析.汇总功能模块的项目.常用的操作Excel文件的方法主要有三个: 1. OleDb: 这种方式是把整个Excel文件当做一个数据源来进行数据的读取操作. 优点:实现方式简单,读取速度快: 缺点:读取Excel数据的过程不太灵活,对内存的占用比较高,当数据量变的很大时,容易由于内存空间

ADF Faces导出Excel文件【附样例工程】

本文提供一个基于ADF Face组件开发样例工程,工程的实现过程分为3个部分以应对Excel导出开发中常见的处理. 1.空模版文件下载:将Excel文件视为普通文件提供下载操作. 2.数据文件输出,将数据内容输出为Excel文件,目标文件尽在服务端内存中存在,这种方式需要对Excel文件的内容处理,需要引入响应的类库. 3.模版文件填充数据后下载,基于服务端的物理文件为模板,将业务数据填入约定位置后提供下载,在实现方面需要为工作簿对象指定源文件输入流,并完成后续内容处理. 实现的基本思路,由AD

PHP导出MySQL数据到Excel文件

PHP导出MySQL数据到Excel文件 转载 常会碰到需要从数据库中导出数据到Excel文件,用一些开源的类库,比如PHPExcel,确实比较容易实现,但对大量数据的支持很不好,很容易到达PHP内存使用上限.这里的方法是利用fputcsv写CSV文件的方法,直接向浏览器输出Excel文件. ? 1 <br><!--?php// 输出Excel文件头,可把user.csv换成你要的文件名header('Content-Type: application/vnd.ms-excel');he

页面导出Excel文件总结

1 概述: 1.1 导出耗时环节 1.利用MySQL语句查询行号,作为导出表格的序号 2.查询数据按照船代分组,Java代码获取分组数据 3.导出Excel文件按照船代分sheet页 4.导出设置错行号,导致表格标题丢失 5.设置导出表格样式 1.2 导出难点: 1.查询数据按照船代分组,Java代码获取分组数据 2.导出Excel文件按照船代分sheet页 2 利用MySQL语句查询行号,作为导出表格的序号 将数据库查询数据导出到Excel文件,Excel文件里有一列是序号,一般情况下,序号可

ThinkPHP导入Excel文件(使用PHPExcel)

主要知识点,用PHPExcel导入Excel数据经过这几天测试还是可以,xls,xlsx都可以获取Excel的数据.下载地址:http://phpexcel.codeplex.com/ O.开发思路 1.先把Excel文件上传到服务器 2.获取服务器Excel文件内容 3.写入数据库 一.上传Excel文件,使用PHP里自带的上传方法 “\Think\Upload();”,可以很方便的实现.为此我整理下使用这个方法的最简单方式 /** * TODO 上传文件方法 * @param $fileid

SQL Server中数据库文件的存放方式,文件和文件组 (转载)

简介 在SQL SERVER中,数据库在硬盘上的存储方式和普通文件在Windows中的存储方式没有什么不同,仅仅是几个文件而已.SQL SERVER通过管理逻辑上的文件组的方式来管理文件.理解文件和文件组的概念对于更好的配置数据库来说是最基本的知识. 理解文件和文件组 在SQL SERVER中,通过文件组这个逻辑对象对存放数据的文件进行管理. 先来看一张图: 我们看到的逻辑数据库由一个或者多个文件组构成 而文件组管理着磁盘上的文件.而文件中存放着SQL SERVER的实际数据. 为什么通过文件组

java的JFileChooser上传一个Excel文件并读取该文件的内容

一.描述 无论是jsp中还是swing中的上传文件组件都可能上传一个Excel文件并且按行读取文件的记录,读取记录后可以提供数据的显示功能,也可以构造sql语句进行数据库中数据的查询等. 例如我们上传一份用户名单,其中包括用户姓名,性别和身份证号,我们将用户真实姓名加上身份证后四位作为用户账号查询数据库中是否有该用户信息,上传的表格如下: 二.所需工具 java要调用Excel并且读取Excel文件中的数据,就必须使用jxl.jar札包,所以先获取该札包然后引入到java项目中. 该札包的免费下

.net 实现Office文件预览,word文件在线预览、excel文件在线预览、ppt文件在线预览,excel转html,office格式转换,(.NET、SQL技术交流群206656202,入群需注明来自博客园)

近日公司要搞一个日常的文档管理的东东,可以上传.下载各种文件,如果是office文件呢还必须得支持预览功能,其他的都好说但是唯独office预览功能比较麻烦,但是不能不做,废话不多说了一步步来吧.分析了下网易邮箱的文件预览功能,他用的是微软的组件,最早叫Office online,现在分开了叫Word online.Excel online ....等等,效果十分炫酷功能十分强大,但是查看了下对api的说明发现对服务器的要求比较苛刻而且配置比较复杂不太适合.然后 又看了下腾讯用的是永中第三方组件