附加到PHP中的HTML日志文件

时间:2009-09-11 08:10:09

标签: php html file-processing

我正在尝试附加到日志文件,使用每种事件的HTML表格格式。但是,有一个困难,我不知道如何解决。这是HTML的静态输出

<table>
  <tr><td> .... </td>
  </tr>

 <!-- new log entry should enter here -->

  </table>
</html>

问题是我如何快速地将日志条目快速插入表中而不会弄乱HTML,最好是使用最少量的处理?我知道我可以加载整个文件,使用模板解决方案,并重写文件,但这可能很慢(日志文件可以快速增长!)。

所以我正在寻找通常用于追加的打开文件,并以某种方式在最后一行之后但在标记之前写入。

有什么建议吗?

PS。我知道如果我在最后省略标签,大多数浏览器都会渲染HMTL,但我很想知道是否有理想的解决方案。

2 个答案:

答案 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>