무한한 while(true)
루프에서 파일 내용을 읽어야합니다. 코드 주석을 통해 설명하겠습니다.
// read.php
<?php
// Last read position
$last = 0;
// Path to the updating log file
$file = 'log.txt';
while (true) {
// PHP caches file information in order to provide faster
// performance; In order to read the new filesize, we need
// to flush this cache.
clearstatcache(false, $file);
// Get the current size of file
$current = filesize($file);
// Reseted the file?
if ($current < $last) {
$last = $current;
}
// If there's new content in the file
elseif ($current > $last) {
// Open the file in read mode
$fp = fopen($file, 'r');
// Set the file position indicator to the last position
fseek($fp, $last);
// While not reached the end of the file
while (! feof($fp)) {
// Read a line and print
print fgets($fp);
}
// Store the current position of the file for the next pass
$last = ftell($fp);
// Close the file pointer
fclose($fp);
}
}
이 테스트 터미널 창을 문제 열려면
while true; do echo `date` >> log.txt; sleep 1; done
이 각각 하나의 초 파일에 현재 날짜 문자열을 추가 것이다. 이제 다른 터미널을 열고 php read.php
을 실행하여 파일이 실시간으로 읽혀지고 있는지 확인하십시오. 이 같은이를 출력 뭔가 :
// While not reached the end of the file
while (! feof($fp)) {
print fgets($fp) . '<br>';
// Flush the output cache
ob_flush();
}
: 당신은 HTTP를 통해이 서비스를 제공하는 경향이 경우
Wed Dec 28 18:01:12 IRST 2016
Wed Dec 28 18:01:13 IRST 2016
Wed Dec 28 18:01:14 IRST 2016
Wed Dec 28 18:01:15 IRST 2016
Wed Dec 28 18:01:16 IRST 2016
Wed Dec 28 18:01:17 IRST 2016
Wed Dec 28 18:01:18 IRST 2016
# Keeps updating...
하면, 당신은 읽기 버퍼를 인쇄 한 후 ob_flush()
호출을 추가해야합니다