10
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

OpenShift で cron を実行する

Posted at

以下コマンドで cron が使えるようになる。

rhc cartridge-add cron-1.4 --app アプリケーション名

sshで接続して確認するとこんなディレクトリ構成になっている。daily, hourly, minutely, monthly, weekly ディレクトリに実行プログラム, jobs.allow, jobs.deny を配置することで定期処理が行われる。

cd $OPENSHIFT_REPO_DIR.openshift/cron/
tree -d .
.
├─ daily
├─ hourly
├─ minutely
├─ monthly
├─ README.cron
└─ weekly

例えば1分おきに test.php を実行させたい場合は、minutely ディレクトリ内に jobs.allow, jobs.deny, test.php ファイルを作成する。

cd $OPENSHIFT_REPO_DIR.openshift/cron/minutely/
touch jobs.allow jobs.deny test.php

test.php は $OPENSHIFT_LOG_DIR/test.log に 現在年月日時分秒 を出力するだけの簡単なもの(※ 1行目に #!/usr/bin/php を書かないと実行されないので注意)

#!/usr/bin/php
<?php
date_default_timezone_set( "Asia/Tokyo" );
$log_file = $_SERVER["OPENSHIFT_LOG_DIR"] . "test.log";
$now_date = date( "Y年m月d日 H時i分s秒" );
file_put_contents( $log_file, "{$now_date}\n", FILE_APPEND );

最後に jobs.allow に実行させたいプログラムを記述して終了。これで1分毎に test.php が実行される。

cd $OPENSHIFT_REPO_DIR/.openshift/cron/minutely/
echo "test.php" > jobs.allow

きちんと実行されているか tail で確認。実行時間にムラがあるけど毎分実行されている。

tail -f $OPENSHIFT_LOG_DIR/test.log
2014年06月09日 15時07分13秒
2014年06月09日 15時08分11秒
2014年06月09日 15時09分10秒
2014年06月09日 15時10分22秒

プログラムの実行をとめる場合は jobs.allow の該当行を削除またはコメントアウトする。

cd $OPENSHIFT_REPO_DIR.openshift/cron/minutely/
vim jobs.allow
# test.php

「5分おきに実行」「毎週金曜の5時5分に実行」といった制御はできない(有料プランだとできる?不明)。

どうしてもやりたいのであれば、プログラム内で時間みて制御する。「5分おきに実行」であればこんな感じか。

#!/usr/bin/php
<?php
if ( date("i") % 5 !== 0 ) {
	exit;
}
// 実行させたい処理
10
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?