>백엔드 개발 >PHP 튜토리얼 >php小代码-从慢日志文件分离出日志记录并存放于excel文件中

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

WBOY
WBOY원래의
2016-06-23 13:26:311156검색

<?phpheader("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('/#\sUser@Host:(.+)\n#\sThread_id/', $content, $match);    $data['User@Host'] = $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 = '# User@Host';$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(    "主机信息" => 'User@Host', "查询时间" => '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 fileheader('Content-Type: application/vnd.ms-excel');header('Content-Disposition: attachment;filename="slowsql.xls"');header('Cache-Control: max-age=0');$objWriter->save('php://output');


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.