1

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

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

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

  </table>
</html>

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

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

有什么建议么?

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

4

2 回答 2

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 函数文档。

于 2009-09-11T08:32:12.727 回答
1

我不确定你在问什么,但它是这样的吗?

<table>
    <tr><td> .... </td></tr>
    <?php
        foreach ($logitems as $item)
        {
            echo "<tr><td>" . $value . "</td></tr>\n";
        }
    ?>
</table>
于 2009-09-11T08:28:35.647 回答