1

インシデントごとにHTMLテーブル形式を使用して、ログファイルに追加しようとしています。ただし、解決方法がわからない問題が1つあります。これが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 に答える