私のパソコン雑記帖
|
トップページに戻る |
|
|
XREA サーバでの cron 利用例
カテゴリー: PC一般 25Sep2008
基本
cron は UNIX(Linux) 系の OS で定期的にコマンドを実行する仕組み。cron を使うと、その時点でPCを操作する必要なしに、あらかじめコマンドを予約しておくことが出来ます。
日時を指定してファイルをアップロードする。
日時を指定してファイルを削除する。
日時を指定してメールを発送する。
等々。
xrea では cron が標準装備されています。以下実際に使ってみた際のメモ。
設定の仕方
- サーバーの管理メニューから「CRON ジョブ」をクリックします。設定画面の下に解説があり、いきなり「CRONTAB の設定方法、シェルスクリプトの記述方法につきましては、サポート対象外とさせて頂いております。」と平手打ちをくわされたような感じですが、実際は解説通りにやればよく、一発で成功しました。
- 一寸紛らわしいと思ったのは、「CRON ジョブの例」 の表示。 [0 * * * * cron1.sh] のように書かれていていますが、[0 * * * * ] の部分は、上の 「CRON ジョブの編集」 で行なうわけだから気にしなくても構わない。この点以外に迷うところはありませんでした。
- 「シェルスクリプトの例」に従えば、シェルスクリプトを知らなくても、これをそのまま使うことができます。私の場合 php で実行ファイルを作ったので、cron1.sh の中身を
#!/bin/sh
#PHP
/usr/local/bin/php /virtual/[user name]/[path]/cron_exe.php
exit
とするだけ。なお cron_exe.php は単独で機能確認しておいた方が間違いありません。
cron_exe.php の例(ファイルのアップデート)。
$file1="[path]/index.php"; //元ファイル
$file2="[path]/index_new.php"; //新ファイル
$fp=fopen($file2, "r");
if(!$fp){print "error2"; exit;}
$content=fread($fp,filesize($file2));
fclose( $fp );
$flock=fopen("[path]/proxy.txt","w");
flock($flock,LOCK_EX);
$fp=fopen($file1,"w");
if(!$fp){print "error1"; exit;}
fwrite($fp,$content);
fclose($fp);
fclose( $flock);
- 以上のように実行ファイル cron_exe.php に依存するのであれば、シェルスクリプトはワンパターンですが、勿論シェルスクリプトの実行コマンドを使うことも可能。ファイルのアップロード、削除、メール発信程度であれば、簡単に覚えられます。cronによる日時指定のWeb更新、メール送信にサンプルコードがあるので参考になります。
cron1.sh (ファイルアップロード)の例
#!/bin/sh
cp /virtual/[user name]/public_html/[path]/index_new.php
/virtual/[user name]/public_html/[path]/index.php
exit
これは、index.php を index_new.php で置き換えるものです。2行目と3行目は改行で表示していますが、実際は改行せず、半角スペースをおいて続けます。
改行コード・他
- 改行コードは「LF」。TeraPad を使用すると「文字/改行コード指定保存」が使えるので便利。文字コードは「EUC」。
- アップロードは「アスキー転送モード」。
- アクセス権限の設定。上にあげたコード例では index_new.php [644] index.php [666] 上位フォールダ [707]。index.php が存在しない時は自動的に生成されます。しかし実際は、index.php [644] でも問題ない。これは xrea/coreserver が持っている special bonus とでも言うべきか。
- シェルスクリプトの実行時にエラーがあった場合、エラーメッセージはxreaに登録してあるメールアドレスに転送されます。
|
|