2011-10-05 2 views
0

xslt와 여러 소스를 사용하여 100 개의 게시물로 XML 파일을 만듭니다. 이 후에 나는 그들의 제목을 날짜별로 정렬합니다 (최신이 첫 번째 임). 페이지에 100 개의 제목 만 표시합니다. 소스가 새 게시물을 올리면 내 목록에서 첫 번째로 가고 마지막 (100 명이 목록에서 나옵니다.) 내가 보여주는 각 게시물은 p+number과 같은 클래스입니다 (예 : 첫 번째는 p1, 두 번째는 p2).업데이트 된 XML 파일의 새 항목을 계산 하시겠습니까?

이 news.php

$feeds=array('big-file.xml'); 
$entries = array(); 
$xml = simplexml_load_file($feed); 
$entries = array_merge($entries, $xml->xpath('//item')); 

foreach ($entries as $post) { 
if(++$i > 100) break; 
echo $post->title; 
} 

내가 big-file.xml 그 매 2 분을 업데이트하는 크론 작업 설정의 주요 부분이다. 또한, index.php에는 매 3 분마다 news.php을로드하는 jQuery 스크립트가있어 방문자들에게 최신 정보를 보여줍니다.

메모는 데이터베이스에 저장되거나 어딘가에 저장됩니다. 100 개의 게시물 만 표시됩니다.

내 질문은 news.php이 업데이트되었을 때 내 목록에 몇 개의 새 게시물이 있는지 알 수있는 방법이 있습니까?

답변

0

전체 목록을 가져올 때 타임 스탬프를 설정할 수 있습니다. 그런 다음 타임 스탬프 뒤에 새로운 요소를 요청하십시오. 서버 측에서는 뉴스 날짜가 타임 스탬프 이전 일 때까지 xml에서 최근 뉴스를 오래된 것으로 가져갑니다. 클라이언트 쪽에서 타임 스탬프를 업데이트해야합니다. LOOP

+1

얼마나 많은 새로운 소식이 있음을 알 수 있습니까? – EnexoOnoma

+0

여기에 (++ $ i> 100)이 깨지면; $ post-> date> $ timestamp $ timestamp가 매개 변수 인 조건을 추가 할 수 있습니다. $ _GET [ 'timestamp']라고 말하면됩니다. 그렇다면 모두 보여주지는 마세요. jQuery 측에서는 타임 스탬프를 현재 시간으로 업데이트하고 다음 호출에서는 news.php 등으로 전달할 것이다. 또한 메모리에 모두로드되지 않도록하기 위해 파서와 같은 SAX를 사용하여 xml 파일을 읽는 것이 좋습니다. – jorgeu

+0

php sax parser 참조 http://www.codemiles.com/php-tutorials/php-sax-parser-in- action-t1436.html – jorgeu

-1

이 파일을 텍스트 파일에 하나의 행으로 작성하여 모든 $ file을 한 행에 쓰게하고 스크립트가 fread 함수로 몇 행을 읽었는지 읽을 수있게하고 3 분마다 지울 것입니다 이 텍스트 파일의 모든 내용. 내가 도왔 으면 좋겠다 :)

관련 문제