今天 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;
}