我正在尝试附加到日志文件,使用每种事件的HTML表格格式。但是,有一个困难,我不知道如何解决。这是HTML的静态输出
<table>
<tr><td> .... </td>
</tr>
<!-- new log entry should enter here -->
</table>
</html>
问题是我如何快速地将日志条目快速插入表中而不会弄乱HTML,最好是使用最少量的处理?我知道我可以加载整个文件,使用模板解决方案,并重写文件,但这可能很慢(日志文件可以快速增长!)。
所以我正在寻找通常用于追加的打开文件,并以某种方式在最后一行之后但在标记之前写入。
有什么建议吗?
PS。我知道如果我在最后省略标签,大多数浏览器都会渲染HMTL,但我很想知道是否有理想的解决方案。
答案 0 :(得分:2)
我建议只使用表格行创建日志文件,然后将其包含在包含所需页眉和页脚的文件中。
所以你会写'log.html',但查看'log.php',它将是:
<html>
<head>
</head>
<body>
<table>
<?php include('log.html') ?>
</table>
</body>
</html>
当然,也许更好的方法是在没有html的情况下存储日志数据(在平面文件或数据库中),然后根据需要生成视图。但是对于你正在寻找的东西,上面应该有效。
如果一切都必须在静态文件中,您可以使用
bool ftruncate ( resource $handle , int $size )
删除文件的最后一行。只要确保你知道“页脚”有多长。以下是一些可能适合您的示例代码。
$footer = "</table></html>";
$file = fopen($log_file, 'rw');
ftruncate($file, strlen($footer));
fseek($file, 0, SEEK_END);
fputs($file, $log);
fputs($file, $footer);
fclose($file);
这是ftruncate function文档。
答案 1 :(得分:1)
我不确定你要求的是什么,但它是这样的吗?
<table>
<tr><td> .... </td></tr>
<?php
foreach ($logitems as $item)
{
echo "<tr><td>" . $value . "</td></tr>\n";
}
?>
</table>