犬ターネット

OPENSHIFT の cron jobs で PHP を実行させる

2013-06-21 openshift

cron の導入の仕方は以下にまとまってる。

Getting Started with CRON Jobs on OpenShift | OpenShift by Red Hat

もちろん cron で PHP も実行可能。以下にまとめておく。

sshでログイン

git push してもいいんだけど、手っ取り早く ssh でログインして作業。ログインの仕方は割愛。

PHPファイルを作成

.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

jobs.allow を作成

先ほど作った 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分毎に実行されてる。

cronを止める

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が終わりそうになったら移行を考えよう。


インターネット・パワー

ツイッターのアイコンをアスキーアートみたいにするやつ