2013-06-21 openshift
cron の導入の仕方は以下にまとまってる。
Getting Started with CRON Jobs on OpenShift | OpenShift by Red Hat
もちろん cron で PHP も実行可能。以下にまとめておく。
git push してもいいんだけど、手っ取り早く ssh でログインして作業。ログインの仕方は割愛。
.openshift/cron/minutely/ticktock.php てファイルを作る。ファイル先頭に「#!/usr/bin/php」つけないと実行されないので注意。
> cd ~/app-root/repo/.openshift/cron/minutely/ > vim ticktock.php #!/usr/bin/php <?php $logdir = $_SERVER['OPENSHIFT_PHP_LOG_DIR']; $logfile = 'ticktock.log'; $date = date('Y年m月d日 H時i分s秒') . "\n"; file_put_contents( "{$logdir}/{$logfile}", $date, FILE_APPEND ); > chmod +x ticktock.php
先ほど作った PHP ファイルと同一階層に jobs.allow を作って ticktock.php を記述。
> cd ~/app-root/repo/.openshift/cron/minutely/ > vim jobs.allow ticktock.php
これでOK。
tailして確認してみる。
> tail -f ~/php/logs/ticktock.log 2013年06月21日 07時39分19秒 2013年06月21日 07時40分22秒 2013年06月21日 07時41分16秒 2013年06月21日 07時42分21秒 2013年06月21日 07時43分16秒 2013年06月21日 07時44分15秒
多少バラつきがあるけど一応1分毎に実行されてる。
jobs.allow の ticktock.php をコメントアウトすればOK。
> cd ~/app-root/repo/.openshift/cron/minutely/ > vim jobs.allow #ticktock.php
無料プランだと、5分毎とか30分毎実行みたいな細かい制御はできない。やるとすれば、PHPファイル内で現在分をとって、5や30で割り切れたら実行する、みたいにするしか無さげ。
とはいえ、無料でPHPもcronもsshも使えるっていうのは最近のPaaSの中だとダントツでいいかもしれない。
appfogが終わりそうになったら移行を考えよう。