前回の構成のためにRSSをダウンロードしてくる処理を作成してみます。
rssDownload.phpが本体でsite.csvから対象URLを取得してrssDataフォルダーにファイルを保存します。
以下がソースです。
<?php
define("RSS_DIR", "../rssData/"); // RSSデータのダウンロード先
define("CSV_FILE", "site.csv"); // RSS配信サイトのURLリスト
define("CRLF", "\r\n");
require_once __DIR__.'/rssLoader/rssLoader.php';
/**
* CSVファイルから対象のRSSURL一覧を取得
*/
echo "load site csv start\n";
// CSVファイルをロード
$siteList = file(CSV_FILE, FILE_IGNORE_NEW_LINES);
if($siteList === false) {
echo "not found ".CSV_FILE."\n";
return;
}
echo "load site csv end\n";
/**
* 各RSSダウンロード
*/
echo "download rss start\n";
$http = new httpConnecter();
try {
$count = 0;
foreach($siteList as $url) {
echo "download url:".$url."\n";
// 接続
$http->connect($url);
// 保存先ファイルオープン
$filePath = sprintf("%s/%03d.rss", RSS_DIR, $count);
$file = fopen($filePath, "wb");
// ストリームでデータをロードし、ストリームで書き込む
$buffer = null;
do {
// webからデータを取得する
$buffer = $http->loadBinnaryStream(4086);
// ファイルにデータを書き込む
fwrite($file, $buffer);
echo ".";
} while(!is_null($buffer));
echo "\n";
// ファイルをクローズ
fclose($file);
$count++;
}
} catch(Exception $e) {
echo $e->getMessage()."\n";
}
echo "download rss end\n";
httpConnecterはrssLoaderが利用しているものを流用しています。
ぶっちゃけこれ使わなくてもいいんですけどね・・
これをcronで定期的回せば定期的にRSSを取得できます。
ソースのダウンロードはこちらから:[download id=”2″]

