我正在尝试绘制现有.log
文件(或.txt
文件中的数据图表,这没关系。)
文件的组织方式如下。
Unixepochtime value value.\n
Unixepochtime value value value value
第一行是不同的,因为它在时间之后只有两个值,而以下所有行(200+可能)与上面看到的第二行完全相同。
然而,不需要第二行和后续行中的最后两个值。
输出需要以下列方式放在文件或字符串中:
[unixepochtime, value], [unixepochtime, value]
当然,每条线路都会有一条,但为了清楚起见,上面的字符串将覆盖两行数据。
对于文件中的第二个值,它需要具有与其行上相同的unixepochtime,但是以上面的格式写入另一个字符串中。
这适用于行数不明的文件吗?我正在使用Flot
,如果有帮助的话。这段代码是否也适用于只有一个值的文件?
答案 0 :(得分:1)
<?php
$pathToLogfile = 'logfile.txt';
// Check if file exists.
if(!file_exists($pathToLogfile)) {
echo('Can not find log file');
exit;
}
// Extract separate lines.
$logEntries = file($pathToLogfile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMTPY_LINES);
// Build code in lines.
$entries = array();
foreach($logEntries as $logEntry) {
// Split logline into separate values by whitespace.
$logLineParts = explode(" ", $logEntry);
// Check if unix epoch is set.
if(!isset($logLineParts[0])) {
echo('Missing unix timestamp...');
continue;
}
$unixTimestamp = $logLineParts[0];
// Check for all values but unix timestamp.
for($i = 1; $i < count($logLineParts); ++$i) {
$entries[] = '[' . $unixTimestamp .', '. $logLineParts[$i] .']';
}
}
echo('Following log items found: '. implode(', ', $entries));
?>
我评论过它,所以我希望你能从中学习(这里最重要的是什么!)应该工作 - 虽然未经测试......