PHPで外部のRSSフォードを取得してcronで実行(ヘテムルのサーバーで使用)

僕の苦手なプログラム言語PHPです。今回はこのPHPで外部のRSSフィードを取得するためのコードを書いていきます。使用するサーバーはヘテムルです

やりたい事

  1. PHPで外部サイトのRSSを取得
  2. cronでphpを実行
  3. 該当フォルダにxmlファイルを保存

PhotoshoplabのRSSを取得

とりあえずPhotoshoplabのフィードを取得します。

$url = "http://www.photoshoplab.jp/feed";
$path= "/home/sites/heteml/users/s/i/t/ユーザーID/web/ドメイン名/xml_data/sample.xml";
file_put_contents($path, file_get_contents($url));

上記のように書いたらrss.phpで保存します。

PHPの事はよくわかんないですが、5系から使えるfile_put_contentsはファイルをデフォルトで上書きをしてくれるといういいやつらしいです。

ファイルのアップロード

クーロンで実行するファイルは、基本的にドキュメントルートよりも上にもってきたほうがいいため、今回は/web/の直下に置くようにします。ヘテムルの場合はこうなります。

 /home/sites/heteml/users/s/i/t/ユーザーID/web/rss.php 

logw_title_6786_003

このようになります。アップロードのソフトはWinSCPを使っています。
※このときphpファイルのパーミッションを700に変更しないといけないみたいです。

ヘテムルにログインしてクーロン設定

logw_title_6786_001

cron設定をクリックします

logw_title_6786_002

初心者モードで書くときは時刻の箇所を10分毎などにします。(確認のため)
実行ファイルパスを書きます。

/web/rss.php

書いたらクーロン名を付けて保存します。

できたらやった!失敗したら次しましょう

このとき、/ドメイン名/xml_data/sample.xmlファイルができていたら成功です。成功したらこの記事をそっと閉じるかいいね!押してから閉じるかTwitterでシェアしてから閉じることをお勧めします。

もし失敗したかたは気にしないでください。僕も失敗しました。普通に上のやり方ではできませんでした。というわけで次いきます。

シェルスクリプトからPHPを実行

先ほどのやり方ではPHPは実行されませんでした。なぜされなかったのかはわかりませんが残念です。そこで、cronからシェルスクリプトを実行してシェルスクリプトでPHPを実行したいと思います。

よくわかんない?

気にしないでください。わかんなくても問題ありません。

シェルスクリプトの作成

シェルスクリプトを作成します。

#!/bin/sh
/usr/local/bin/php54 -f /home/sites/heteml/users/s/i/t/ユーザーID/web/rss.php

これを保存します。ファイル名をphp.shとします。ヘテムルではphpを実行するときは/usr/local/bin/php54と付けないといけないのでつけます。

FTPでアップロード

logw_title_6786_004

FTPでアップロードしました。このとき、バイナリーモードではなくアスキーモード(WinSCPだとテキストモード)で転送してください。php.shのパーミッションを700に設定してください。ここ大事なのでもう一度いいます。
バイナリーモードではなくアスキーモード(WinSCPだとテキストモード)で転送してください。php.shのパーミッションを700に設定してください。

cron設定

logw_title_6786_002

初心者モードで書くときは時刻の箇所を10分毎などにします。(確認のため)
実行ファイルパスを書きます。

 /web/php.sh 

とします

これで問題なく動作します。