PHPで複数のRSSを1つにまとめる&別サーバーにファイル転送

こんばんわ。

 

 

今私はサブディレクトリ型のサイトを複数作成しています。
そうすると個々のサブディレクトリのサイトのRSSは

 

/サブディレクトリのサイト1/rss.xml
/サブディレクトリのサイト2/rss.xml

 

とかになります。

 

 

いっぽうドメイントップのrssは
/rss.xml
ですね。

 

 

rssのフォルダ構成は実際とは若干異なります。

 

 

でこれらのRSSを1つにまとめれば
・Googleウェブマスターツール
・RSSを読み込んでいろいろしてくれるWebサービス
で便利に利用できます。

 

 

最初は、
複数のRSSを1つにまとめるPHPだけを作成して、サイトと同じサーバーのCRONを利用して、マージしたRSSを生成していました。

 

 

ですが、
・個々のサブディレクトリのRSSが項目が多くなってくる
・サブディレクトリのサイト数も多くなってくる

 

この状態で1つのRSSにまとめるPHPを実行すると、わずかの間ですがサーバーの反応が悪くなります。

 

 

そこで別サーバーで
・複数のRSSをPHPで1つにまとめて
かつ、
・1つにまとめたRSSをドメイントップのサーバーにPHPで転送

 

 

そんなに詳しくないので手こずりましたが

 

ロリポップのサーバー上で複数のRSSを1つにまとめる

別サーバーのミニバードに転送

 

PHPでRSS生成&ファイル転送

 

こんな感じです。

 

 

新たにサブディレクトリのRSSを追加したい場合は、PHPにRSSのURLを追加するだけです。
これで、複数のRSSをマージしてファイル転送まで勝手にやってくれます。

 

 

ホントはキャッシュを利用しなくてもいいんですが、どうやって外すかがわかりません(笑)

 

 

このPHPをロリポップののCRONに登録し毎日定時に実行するようにしました。

 

 

RSSをマージするPHPはググればすぐに見つかります。

 

別サーバーにファイル転送するPHPだけ書いておきます。
$ftp_server="●リモートのホスト名●";
$ftp_user_name="●リモートのユーザー名●";
$ftp_user_pass="●リモートのパスワード●";

 

//サーバーに接続する
$conn_id = ftp_connect($ftp_server);

 

// ユーザ名とパスワードでログインする
$login_result = ftp_login($conn_id,$ftp_user_name,$ftp_user_pass);

 

// 接続できたか確認する
if((!$conn_id) || (!$login_result)){
echo $ftp_user_name. "のFTP接続に失敗しました。";
exit;
} else {
echo $ftp_user_name."のFTP接続に成功しました。";
}

 

if(ftp_chdir($conn_id,"●リモートのフォルダ名(最初と最後の/なし)●")){
echo "現在のカレントディレクトリは、「" . ftp_pwd($conn_id) . "」です。<br/>";
} else {
echo "ディレクトリを移動できません<br/>";
}

 

// カレントディレクトリの内容を得る
$contents = ftp_nlist($conn_id,".");
// $contents を出力する
// var_dump($contents);

 

 

$local_file="●転送元のファイル名●";
$remote_file="●転送先のファイル名●";

 

echo " <br/>" ;
echo "ローカルファイル名:" .$local_file ."<br/>";
echo "リモートファイル名:" .$remote_file ."<br/>";
echo "↓ <br/>" ;

 

if(!ftp_put($conn_id,$remote_file,$local_file,FTP_BINARY)){
echo "FTPアップロードに失敗しました。";
exit;
} else {
echo "FTPアップロードに成功しました。";
}
ftp_close($conn_id);

 

以上を<?php と ?>で囲んで◯◯.phpのファイル名で保存すればOKです。
※<>と?は半角です。
※<br/>も半角です。

 

日本語文字を含んでいるので、文字コードはUTF-8かな。
ショップ作成
 
この記事を書いた人

kaimonojyoz

Firefoxはかれこれ15年以上使っていて、Firefoxなしでは生きていけない体になってしまいました笑

 

アクアリウムは海水水槽のサンゴを全滅させた黒歴史からモチベーションがほぼゼロとなり、今に至ります。

 

1番長く生きてるお魚はカクレクマノミとゴールドナゲットマロンで、もうすぐ9年になります。

このページをシェアする
guest
0 Comments
Inline Feedbacks
View all comments