新手问题 有关 mysql 日志合并 ruby 脚本

_smiley_teresa · 2012年11月01日 · 2190 次阅读

今天 boss 让我整理一下 mysql 日志 按照语句执行的顺序由高到低进行排序 并显示执行次数 想用 ruby 写一下 但是苦于菜鸟 无从下手 于是还是用 php 写了一个 当然 php 也是菜鸟 下面是 php 代码 我觉得 php 的 array() 和相关的函数很方便啊 所以想请教一下 如果 ruby 的话如何实现

<?php
ini_set("display_errors", "On");//显示错误
error_reporting(E_ALL);
ini_set("memory_limit","-1");//取消内存限制
$file = fopen('mysql.log', 'r');
$arr = array();
while (!feof($file))
{
    $temp =  fgets($file);
    if ($t = strstr($temp, 'SELECT'))
    {
        $arr[] = $t;
    }
    elseif ($t = strstr($temp, 'UPDATE'))
    {
        $arr[] = $t;
    }
    elseif ($t = strstr($temp, 'DELETE'))
    {
        $arr[] = $t;
    }
}
fclose($file);
$file = fopen('mysql-slow.log', 'r');
while (!feof($file))
{
    $temp =  fgets($file);
    if ($t = strstr($temp, 'SELECT'))
    {
        $arr[] = $t;
    }
}
fclose($file);

$brr = array_count_values($arr);//计算value 重复数量
uasort($brr, "my_sort");//排序

$f = fopen('mysqllog.txt', 'a');
foreach ($brr as $key => $value)
{
    fwrite($f, $key . "\t". $value . "\n");
}
fclose($f);

function my_sort($a, $b)
{
    if ($a == $b) return 0;
    return ($a > $b) ? -1 : 1;
}
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请 注册新账号