• ベストアンサー

phpで web-page と cron job 記述の違い教えてください

 phpのhttp内記述と XREAのCRON内記述の違いについてこのPGに関して教えてください。  現在防犯カメラとして動作感知すればサーバーに写真画像UPするようにしてます。  しかし、旧写真をFTPで手動で削除しており手間が大変です。よってCRON-JOB化したく勉強中です。  カメラの仕様でファイル名に日付+時間が着くのでまずファイル名を取得して。 次に削除ロジックを組み込みたいと取り掛かりました。が  指定時間にJOBは稼動するのですが、エラーが出て基本的文法の勉強不足の為原因が判りません。間違いを指摘ください。  下記は正常に稼動する http://aa.ebb.jp/ 内にある~.jpgを抜き出すPGです。 <HTML> <?php echo "** 動作 開始**`date '+%Y/%m/%d %H:%M'`."; if (!($dir = opendir("./"))) { die; } while ($fnm = readdir($dir)) { if (ereg('.jpg$', $fnm)) { print "<P>$fnm</P>\n"; } } closedir($dir); を下のアドレスへUPし実行しますと正常に動作します。(日時は実行無し) http://aa.ebb.jp/t4.php ★★★★実行結果:★★★★日時表示しない以外は正しく稼動してます ** 動作 開始**`date '+%Y/%m/%d %H:%M'`. shasin01.jpg shasin02.jpg shasin03.jpg shasin04.jpg shasin05.jpg ** 動作 終了**`date '+%Y/%m/%d %H:%M'`.  これをCRON JOB化したく次のコーディングしてUPとcronジョブ欄にSETしました。 (写真データともに上記WEBページと同じ場所http://aa.ebb.jp内) #!/bin/sh #PHP /usr/local/bin/php /virtual/aaa/public_html/aa.ebb.jp echo "** 動作 開始**`date '+%Y/%m/%d %H:%M'`."; if (!($dir = opendir("./"))) { die; } while ($fnm = readdir($dir)) { if (ereg('.jpg$', $fnm)) { print "<P>$fnm</P>\n"; } } closedir($dir); exit 格納場所は下記場所です。LFやコードは注意してるつもりですが? public_html/aa.ebb.jp/ct4.sh  実行時次のエラーが帰ってきます。(echo内容の日時は正しく表示) 他でも( のところで引っかかってPG実行出来ません。 ★★★★実行結果:★★★★管理者宛メール内容 ** 動作 開始**2008/01/25 17:15. /virtual/aaa/public_html/aa.ebb.jp/ct4.sh: line 5: syntax error near unexpected token `(' /virtual/aaa/public_html/aa.ebb.jp/ct4.sh: line 5: ` if (!($dir = opendir("./"))) {'

質問者が選んだベストアンサー

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

XREAでcronを書くときには 【ct4.sh】 #!/bin/sh #PHP /usr/local/bin/php /virtual/aaa/public_html/aa.ebb.jp/t4.php とだけ書いておけば、指定した時刻にt4.phpを実行します。/usr/local/bin/php の引数はスクリプトを記述したファイルです。c4.shの中にphpスクリプトを書いてはいけません。

参考URL:
http://sb.xrea.com/showthread.php?t=12181
oldjupiter
質問者

お礼

 早速ご指示通りやって成功しました。  大変早い回答に感謝します。  実はshimixさんの過去回答を参考にやったのですが、どこか間違ってたのですね。  次の課題は print コマンドを rm か unlink コマンドに変えて実際に削除できるよう、変更する必要があります。今のところ、phpでもcronでもファイル名直書きでは出来ましたが、組み込み繰り返しは成功していません。 不思議ですが実験で下記の場合はshの中に直下記してもファイルは削除されています。 略 rm /virtual/aaa/public_html/sakujyo.php 略 本件実行結果です。10日位悩んだのが数分で・・。本当にありがとうございました。 Content-type: text/html <HTML> ** 動作 開始**`date '+%Y/%m/%d %H:%M'`.<P>shasin01.jpg</P> <P>shasin02.jpg</P> <P>shasin03.jpg</P> <P>shasin04.jpg</P> <P>shasin05.jpg</P>

その他の回答 (1)

  • wp_
  • ベストアンサー率54% (132/242)
回答No.2

防犯カメラの画像を手動で削除しないでどうやって防犯するんだろうという突っ込みはさておき。 shにphpのコードを書いても動くはずがありません。 shにはshの文法が、phpにはphpの文法があります。 aa.ebb.jpの最後に echo "** 動作 開始**`date '+%Y/%m/%d %H:%M'`."; (snip) を記述するか、PHPロジックを別ファイルに記述しshの中で /usr/local/bin/php /virtual/aaa/public_html/aa.ebb.jp /usr/local/bin/php /virtual/aaa/public_html/作ったPHPファイル としましょう。

oldjupiter
質問者

補足

 早速の回答ありがとうございます。 おかげさまで、別々に書いて解決いたしました。もう一つの方テストしましたが?(snip)の意味からshの終わりで次から実行内容と解釈して、ご指示のところへ記入しましたが。以下添付のようなエラーとなりました。しかし本件は解決しました。お時間をいただき本当にありがとうございます。  蛇足ですが、突っ込まれた件の回答は、曜日別に別リレクトリにUPしておりますので。cronの実行を曜日別に設定します。3日も保存してれば充分ですので。PG力がつけばwrite日が数日古いものを毎日消すようにしたいと考えています。 ** 動作 開始**2008/01/25 21:00. /virtual/aaa/public_html/aa.ebb.jp/ct4.sh: line 4: snip: command not found /virtual/aaa/public_html/aa.ebb.jp/ct4.sh: line 5: syntax error near unexpected token `(' /virtual/aaa/public_html/aa.ebb.jp/ct4.sh: line 5: ` if (!($dir = opendir("./"))) {'