XREAでCRONをつかってPHPを自動実行させてみたメモです。

XREAのコントロールパネルの「CRONジョブ」で設定できます。
説明には「 ジョブの間隔は最短で1時間に1回とさせて頂いております。」とありますが、ジョブを複数設定可能なので、例えば
分	時	日	月	曜日
0 * * * *
5 * * * *
10 * * * *
15 * * * *
20 * * * *
25 * * * *
30 * * * *
35 * * * *
40 * * * *
45 * * * *
50 * * * *
55 * * * *
として、同じスクリプトを実行するようにしておけば、5分おきに自動実行することもできました。

実行スクリプト
実行対象となるシェルスクリプトで書く必要があるので、PHPなどを実行したい場合は、下記のようにファイルを作成し「○○.sh」で保存します。
この時、文字コードは「SHIFT-JIS」改行コードは「LF」にします(シェルスクリプトはDreamweaverで直接開けないかもしれないのでTeraPadなどのエディタを使いましょう)。
このファイルをサーバーへアップロードしてそのパスをコントロールパネルで指定し、「保存」をします。反映まで1時間程度かかると書いてますが、僕の環境では数分という印象でした。(追記:時間帯により結構差があるようです)
#!/bin/sh
/usr/local/bin/php /virtual/ユーザ名/public_html/test.php
exit
※1行目は「#」で始まってるけどコメント行ではないので必須
※赤字部分が実行したいPHPファイルへの絶対パスです。赤字部分手前には半角スペースが必要です。

実行PHP
基本的な使い方ですが、例えば上記のシェルスクリプトで指定したtest.phpを
<?php
echo "test !";
?>
としておくと、echoの部分が管理者へメールで送られます。エラーが発生した場合にもメールでエラー内容が送られてきます。(※通知メールの設定については後述)
権限は、とりあえず700にしておけば動作しました。(所有者が実行可能になってればOK?)

ファイルのインクルード
注意点は、PHPでファイルをインクルードしている場合です。
相対パスや、この前の記事でやっているように.htaccessを用いたやり方だとパスは通らないので、実行スクリプトでも下記のようにパスを指定します。
#!/bin/sh
/usr/local/bin/php -d include_path='.:/usr/local/lib/php:/virtual/ユーザ名/public_html/pear/php' /virtual/ユーザ名/public_html/test.php
exit


通知メール
最後に、通知メールについて。(参考サイト
実行スクリプトの指定に続けてオプションを指定することで、通知メールの設定ができます。
上記のように「・・・text.php」の後に何も書かないと1)になります。
1)エラーの有無にかかわらず、通知メールを出す:test.php
2)エラーの有無にかかわらず、通知メールを出さない:test.php >/dev/null 2>&
3)エラーがあった場合にのみ、通知メールを出す:test.php >/dev/null

3)にしたい場合は、実行スクリプトは下記のようになります。
#!/bin/sh
/usr/local/bin/php -d include_path='.:/usr/local/lib/php:/virtual/ユーザ名/public_html/pear/php' /virtual/ユーザ名/public_html/test.php >/dev/null
exit