Blogブログ

crontab使ってwordpress記事をサイトへ自動表示

2015/12/12

wordpressの記事を取得し、サイトへ反映!
最初にwordpressから生成されるxmlを読み込むというやり方で行ったが、読み込みがかなり遅延していてサイト表示に6秒かかるという無残な形に。。
原因はxmlファイルが実際に存在しているのではなくhttp://wordpressドメイン/?feed=rss2という感じでアクセスするとリアルタイムでxmlデータを作成して返していたのでアクセスする毎に毎回データを作っているから遅延していました。

方法を変えて、記事を取得し、そのデータをファイルに記録してそれを読み込むことにしました。
記事取得部分のphp(仮にwordpress.phpとします)はcronで3時間毎に回す形に変更。

/etc/rc.d/init.d/crond status

cron動作確認。OK

00 0-23/3 * * * root /usr/bin/php /xxx/xxx/worpress.php

3時間ごとにwordpress.phpにタッチ
cronの書き方は下記を参照
http://www.server-memo.net/tips/crontab.html

定期実行するPHP
wordpress.phpの中身

//Wordpressのxmlデータを取得
$blog = file_get_contents ( 'http://ワードプレスのURL/?feed=rss2' );
//記事タイトル・記事URL・記事日付・記事カテゴリーに分解
preg_match_all('@<item>.*?<title>(.*?)</title>.*?<link>(.*?)</link>.*?<pubDate>(.*?)</pubDate>.*?<category>(.*?)</category>.*?</item>@s' , $blog , $match , PREG_SET_ORDER );
$con = count ( $match );
for ( $i = 0 ; $i < $con ; $i ++ ) {
	$data[$i]['title'] 		= $match[$i][1];
	$data[$i]['url'] 		= $match[$i][2];
	$data[$i]['date'] 		= date ( "Y.m.d" , strtotime ( $match[$i][3] ) );
	$data[$i]['category'] 	= str_replace ( "]]>" , "" , str_replace ( "<![CDATA[" , "" , $match[$i][4] ) );
	//ファイルに保存するために連結してString型に。¥n¥n¥nを各データのセパレータにする
	$data_string.= $data[$i]['title'].'¥n¥n¥n'.$data[$i]['url'].'¥n¥n¥n'.$data[$i]['date'].'¥n¥n¥n'.$data[$i]['category']."\n";
}
//あとは$dataをfwite()を使ってファイルに保存すればOK。
//その後呼び出したいページからこの生成したファイルを読み込めば格段にスピードが早くなって読み込めます。

株式会社むね工房-打ち合わせ-

2015/12/08

先日伝統的な宮大工さんとの打ち合わせに行ってきました。

職人として10年以上のキャリアを積んで、会社を設立。建築に対する熱い想いを聞かせて頂くことが出来ました。

続きを読む »