RSS 배급 · 3 min read · Sep 14, 2025
MagpieRSS로 쉽게 RSS 배급하기
MagpieRSS로 쉽게 RSS 배급하기
MagpieRSS란?
MagpieRSS는 애정 어린 이름으로 Magpie로 알려진 PHP용 RSS 및 Atom 파서입니다. 이를 통해 RSS 또는 Atom 피드를 가진 웹사이트의 최신 기사를 자신의 사이트에 표시할 수 있습니다. 이는 사이트에 새롭고 신선하며 관련성 있는 정보를 추가하는 훌륭한 방법입니다. RSS 0.9, RSS 1.0을 파싱하며, RSS 2.0 및 Atom 0.3에 대한 일부 지원도 제공합니다.
Magpie를 사용하려면 무엇이 필요합니까?
Magpie를 사용하려면 서버가 XML 지원이 있는 PHP 버전 4.2.0 이상이거나 libxml2 지원이 있는 PHP5를 지원해야 합니다. 그 후, Magpie를 설정하고 사용하는 것은 매우 간단합니다.
알겠어요, 충분히 들었어요. 어디서 받을 수 있나요?
여기 클릭하여 SourceForge에서 Magpie를 다운로드할 수 있습니다.
이제 무엇을 해야 하나요?
파일을 추출하고 다음 파일을 서버에 업로드하세요: rss_fetch.inc, rss_parser.inc, rss_cache.inc, rss_utils.inc 및 extlib이라는 전체 디렉토리. 이러한 파일은 웹 서버의 루트에 있는 어떤 디렉토리에도 넣을 수 있습니다. 저는 일반적으로 rss라는 이름의 디렉토리에 업로드합니다.
다음으로, 배급된 콘텐츠가 어디로 가야 할지 결정해야 합니다. 예를 들어, www.example.com의 인덱스에 콘텐츠를 배급하고 싶다면 index.html(php) 파일을 수정해야 합니다. 파일이 php로 끝나지 않으면 php로 끝나도록 변경해야 하며, php 코드를 추가할 것입니다.
다음으로 index.php 파일을 실제로 수정합니다. 피드를 표시할 페이지의 상단에 다음 코드를 추가해야 합니다:
경로는 디렉토리 이름과 index.php가 위치한 트리에 따라 다를 수 있습니다. 페이지에 피드를 실제로 추가하려면 RSS를 가져오고 파싱하기 위해 다음 줄도 추가해야 합니다:
그리고 표시하려는 피드의 주소로 주소를 바꿉니다.
이것은 배급된 콘텐츠와 발행자에 대한 일부 정보를 포함하는 배열 $rss를 반환합니다. 반환된 다른 정보(일반적으로)는 발행자의 이름으로 $rss->channel[‘title’]에 저장되고, 발행자의 설명은 $rss->channel[‘description’]에 저장되며, 발행자에 대한 일반 링크는 $rss->channel[‘link’]에 저장됩니다.
항목은 $rss->items를 통해 접근할 수 있으며, 간단한 루프를 사용하여 항목을 하나씩 순회할 수 있습니다. 루프의 코드는 다음과 같습니다:
foreach ($rss->items as $item)
{ // 항목을 조작하는 코드 여기
}각 항목에는 제목, 링크 및 설명이 포함되어 있습니다. $item[‘title’]에는 기사의 제목이 포함되고, $item[‘link’]는 원본에 대한 링크이며, $item[‘description’]은 종종 콘텐츠의 처음 몇 줄인 이야기의 설명입니다. 배급된 콘텐츠의 기본 목록은 다음 코드를 사용하여 달성할 수 있습니다:
channel['link'].">".$rss->channel['title']."";
foreach ($rss->items as $item) {
$href = $item['link'];
$title = $item['title'];
$desc = $item['description'];
echo "
$title
";
if($desc) echo $desc;
}?>
이것은 꽤 기본적이지만, 필요에 맞게 사용자 정의할 수 있어야 합니다.
일반적인 문제 및 해결책
배급된 콘텐츠가 제 사이트에 너무 깁니다.
배급하는 콘텐츠가 너무 길거나 항목이 너무 많아 사이트가 이상하게 보이기 시작하면, 표시되는 항목 수를 설정하고 설명의 길이를 설정하기 위해 다음 줄을 추가하면 됩니다.
$items = array_slice($rss->items, 0, 5);이 줄은 피드의 하위 집합만 반환하며, 이 경우 첫 5개의 항목만 반환합니다. 설명을 줄이려면 다음 줄을 사용합니다:
if (strlen($desc) >= 100)
{
$desc = substr($desc,0,99)."...";
}이것은 설명의 문자열 길이가 100자보다 긴지 확인하며, 만약 그렇다면 처음 99자를 표시하고 …를 추가하여 독자에게 계속된다는 것을 알립니다.
피드의 캐싱을 활성화하여 대역폭을 줄이고 로딩 속도를 높이고 싶습니다. 가능합니까?
물론입니다! Magpie는 기본적으로 캐싱이 활성화되어 있지만, 캐시할 디렉토리를 변경하고 서버가 실행되는 사용자가 쓸 수 있도록 설정해야 할 수도 있습니다. 스크립트가 호출되는 작업 디렉토리에 쓰기를 시도합니다. 예를 들어, 피드를 홈페이지에 추가하면 스크립트는 서버의 루트에 캐시 디렉토리를 생성하려고 시도합니다. 다음 줄은 캐시를 활성화하고 캐시할 디렉토리를 설정합니다:
define('MAGPIE_CACHE_DIR', '/tmp/magpie_cache');
define('MAGPIE_CACHE_ON', 1);기본적으로 Magpie는 항목을 1시간 동안만 캐시하지만, 다음 줄로 변경할 수 있습니다:
define('MAGPIE_CACHE_AGE', 1800);이것은 Magpie가 항목을 30분 동안 캐시하도록 설정합니다. 간격은 초 단위로 지정된다는 점에 유의해야 합니다.
알겠어요, 그 줄을 추가했는데도 캐싱이 여전히 작동하지 않아요!
캐시할 디렉토리가 존재하고 서버가 실행되는 사용자가 쓸 수 있는지 확인해야 합니다. Debian에서는 www-data입니다. 다른 배포판에서 apache가 기본적으로 어떤 사용자로 실행되는지 모르겠습니다. 다음 명령어를 사용하여 (루트로) 수행할 수 있습니다:
mkdir /tmp/magpie_cache
chown www-data:www-data /tmp/magpie_cache캐시는 /tmp에 있을 필요는 없으며, 공유 호스팅을 사용하는 경우 변경하는 것이 실제로 좋은 생각입니다. 그 후 페이지를 새로 고치면 캐시 디렉토리에 매우 이상한 이름의 파일이 몇 개 보일 것입니다. 그렇게 되면 모든 것이 잘 작동하는 것입니다. 그렇지 않으면 MagpieRSS 홈페이지의 FAQ를 참조하십시오.
모든 것을 종합하기
다음은 옵션을 결합하는 방법이며, 제 사이트에서 약간 수정된 작동 예제입니다.
items, 0, 5);
foreach ($items as $item) {
$href = $item['link'];
$title = $item['title'];
$desc = $item['description'];
echo "
$title
";
if($desc)
if (strlen($desc) >= 125)
{
$desc = substr($desc,0,124)."...";
}
echo $desc;
}
;
?>
이것은 www.digg.com의 리눅스 섹션에서 피드를 가져오고 첫 5개의 항목을 125자 길이의 설명과 함께 표시합니다. 또한 기본 캐시 시간 1시간으로 /var/cache 디렉토리에 캐시합니다.
그리고 이것이 MagpieRSS로 빠르고 쉽게 RSS 배급하는 방법입니다! 추가 정보, 도움 또는 기타 사항이 필요하면 MagpieRSS 홈페이지를 확인하시기를 강력히 권장합니다. 그들은 또한 활발한 메일링 리스트를 운영하며, 제가 도움이 필요할 때마다 질문에 답변한 아카이브를 유지하고 있습니다.
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.