Posts tagged shell

[symfony] askeet 4日目

1

4日目です。

昨日までに作成した質問の一覧画面から質問の個別表示ページ

http://askeet/frontend_dev.php/question/show/id/1

にアクセスするとエラーになる。調べると show アクションもビューもない。
(続きを読む…)

[symfony] askeet 3日目

0

3日目をやってみてどうもバージョンの違いのためかチュートリアルに書かれている内容と実際にいじっているコードで違いが結構あるのに気がついた。そこで今回から違う点についても少し書いておきます。(askeet の symfony のバージョンは 1.0 、実際にいじっている symfony のバージョンは 1.1 です。)

MVC モデル

MVC の各ファイルの場所
モデル
askeet/lib/model/
ビュー
askeet/apps/frontend/modules/question/templates/
コントローラ
askeet/apps/frontend/modules/question/actions/

(続きを読む…)

[symfony] askeet 2日目

1

無事デバッグモードも表示できたので askeet 2日目に進みました。

データベースの設定

データベース askeet を作成
$ mysqladmin -u username -p --default-character-set=utf8 create askeet

(続きを読む…)

[symfony] askeet 1日目

4

symfony を学習するために askeet を順番にやっていくことにしました。まずは1日目です。
(続きを読む…)

CakePHP1.2 バッチ処理

2

CakePHP1.2 にシェル機能というのがあるのを知りました。下記エントリでメールからの処理を実際に行う方法が紹介されています。
メール受信からのシェル機能実行 – Writing Some Code

ちょうど CakePHP1.2で開発中のシステムで cron でのバッチ処理があるのでそれに応用してみたときのメモです。

バッチ処理で実行させるシェル機能を作成

今回は test という名前のシェル名にします。
app/vendors/shells/test.php を作成します。

< ?php
class TestShell extends Shell {

    var $uses = array('Model');

    function actionName(){
        /* 実際の処理を書きます */
        /* $this->uses に追加したモデルが使用できます */
        $lists = $this->Model->findAll();
    }
}
?>

シェルスクリプト

下記のようなシェルスクリプトを作成して cron から実行させます。

#!/bin/sh
cd /path/to/app
../cake/console/cake test actionName

シェルスクリプトなしで直接 cake を実行する方法もある

cake を実行するときにカレントディレクトリが app でないとだめなのですが、
-app /path/to/app
のように -app オプションで実行時に app のパスを指定することもできます。
その場合は下記のようになります。
/path/to/cake/console/cake test actionName -app /path/to/app
これを直接 cron から実行させればシェルスクリプトなしでも実行できます。

その他

vendors/shells 内のファイルですが、ファイル名が hoge_foo.php だった場合、クラス名は HogeFooShell ですが、実行するときは
cake/console/cake hoge_foo actionName
となるようです。

シェルから CLI版 PHP を実行した場合の返り値

0

シェルから PHP を実行してその結果を元にシェルで処理をしたいので、PHP からシェルに値を戻す方法を調べた。
exit で引数を指定できるのを知らなかったのでメモ。

●参考PHPマニュアル
PHP: exit – Manual

正常終了の場合
exit(0);
異常終了の場合
exit(1);
とすれば

/usr/bin/php hoge.php
if [ $? -ne "0" ]; then
    異常終了時の処理
else
    正常終了時の処理
fi

と “$?” で php からの返り値をチェックしてその後の処理の分岐に使用できます。

Go to Top