PHP의 HTML 로그 파일에 추가
-
05-07-2019 - |
문제
각 사건에 대해 HTML 테이블 형식을 사용하여 로그 파일에 추가하려고합니다. 그러나 해결 방법을 잘 모르는 어려움이 있습니다. 다음은 HTML의 정적 출력입니다
<table>
<tr><td> .... </td>
</tr>
<!-- new log entry should enter here -->
</table>
</html>
문제는 HTML을 엉망으로 만들지 않고 신속하게 로그 항목을 테이블에 빠르게 삽입하고 바람직하게는 최소한의 처리를 사용하는 방법입니다. 전체 파일에로드하고 템플릿 솔루션을 사용하고 파일을 다시 작성할 수 있지만 느리게 될 수 있습니다 (로그 파일이 빠르게 증가 할 수 있습니다!).
그래서 나는 Append를위한 일반적인 열린 파일을 찾고 있으며, 마지막 행 뒤에는 태그 전에 글을 쓰고 있습니다.
제안이 있습니까?
추신. 마지막에 태그를 제거하면 대부분의 브라우저가 HMTL을 렌더링한다는 것을 알고 있지만 이상적인 솔루션이있을 수 있는지 궁금합니다.
해결책
테이블 행만으로 로그 파일을 작성한 다음 필요한 헤더와 바닥 글로 파일에 포함시킵니다.
따라서 '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 함수 선적 서류 비치.
다른 팁
나는 당신이 무엇을 요구하는지 잘 모르겠지만, 이와 같은 것입니까?
<table>
<tr><td> .... </td></tr>
<?php
foreach ($logitems as $item)
{
echo "<tr><td>" . $value . "</td></tr>\n";
}
?>
</table>