前回の構成のために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″]