徒然なるままに プログラミングメモや日々の生活などつれづれとつづっていくblog

2013年6月30日

ファイルをローカルにダウンロードする

Filed under: PHP,アンテナサイト — ranpei @ 7:09 AM

前回の構成のためにRSSをダウンロードしてくる処理を作成してみます。

フォルダ構成は以下のようにしてみました。
antenaSiteDir

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″]

コメントはまだありません »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment

Powered by WordPress