2012-07-25 3 views
0

PHP 및 AJAX 요청을 사용하여 항상 실행중인 프로그램의 출력을 얻고 5 초 간격으로 웹 페이지에 인쇄합니다. 경우에 따라이 로그 파일의 크기는 최대 2MB까지 가능합니다. 사용자가 적어도 한 번 이상 전체 내용을 얻은 경우 AJAX 요청이이 파일의 전체 내용을 5 초마다 가져 오는 것은 실용적이지 않습니다. 요청은 사용자가 이전 요청에서 얻지 못한 내용을 가져와야합니다.AJAX/PHP는 파일 내용을 수정했습니다.

문제는 사용자가받지 못한 콘텐츠를 어디에서 찾을 지에 대한 단서가 없습니다. 힌트, 팁 또는 제안 사항이 있습니까?

편집 : 프로그램의 출력이 시간 (HH : MM : SS AM/PM)으로 시작되며 이후의 모든 항목에는 패턴이 없습니다. 로그 파일은 며칠 이상 걸릴 수 있으므로 예를 들어 파일에 "02:00:00 PM"이 하나만있을 수 있습니다. 로깅되는 프로그램을 작성하지 않았으므로 출력 형식을 수정하는 방법이 없습니다.

+0

이 행 번호 또는인가 전송중인 ID는 무엇입니까? 그렇다면 사용자가 정보를 얻을 때마다 마지막 ID를 업데이트하십시오. –

+0

스택 오버플로에 오신 것을 환영합니다! –

+0

아니요 줄 번호가 없으므로 위의 게시물을 로그 형식에 대한 약간의 정보로 편집했습니다. 그리고 가브리엘에게 감사드립니다! –

답변

2

머리 요청을 사용하면 올바른 경로로 시작할 수 있다고 생각합니다.

확인이 스레드 :

$ 아약스 ({URL : "일부 URL"입력 : HTTP HEAD Request in Javascript/Ajax?

당신이 jQuery를 사용하는 경우, 그것은 아약스 호출에서 간단한 형식의 변화이다 " 머리".....});

개인적으로 파일 크기가 이전 응답과 비교하여 수정 된 &인지 확인하고 업데이트 된 경우 새 데이터를 가져옵니다. 당신이 아약스를 통해 파일의 일부만을 가져올 수 있는지 확실하지 않습니다,하지만 난이 아주 쉽게 PHP를 통해 수행 할 수 있습니다 확신, 가능성이 스레드가 도움이 될 수

How to read only 5 last line of the text file in PHP?

+0

머리 요청을 잊어 버렸습니다! 그래서 꽤 많이 반환 된 파일 크기를 사용자가 이미 로그 파일을받은 크기와 비교하십시오. 그렇지 않다면 요청할 오프셋을 계산하십시오 (오프셋은 PHP로 처리됩니다)? –

+0

예 :) 그게 내가 취할 것입니다. – nebulae

+0

감사합니다. 충분히 단순 해 보입니다. 그 머리 요청은 이것을 위해 아주 유용 할 것입니다. –

0

프로그램의 작성 방법과 데이터 인쇄 방법에 따라 다르지만 타임 스탬프를 사용하여 데이터 양을 줄일 수 있습니다. 어떤 종류의 ID를 가지고 있다면 아마도 타임 스탬프의 그것들을 사용해야 할 것입니다.

관련 문제