Posts tagged shell
[symfony] askeet 5日目
15日目はログイン処理の追加とページ処理です。
ログイン処理
ログインリンク追加
askeet/apps/frontend/templates/layout.php
about のリンクの前に入れる
<li><?php echo link_to('sign in', 'user/login') ?></li>
[symfony] askeet 4日目
14日目です。
昨日までに作成した質問の一覧画面から質問の個別表示ページ
http://askeet/frontend_dev.php/question/show/id/1
にアクセスするとエラーになる。調べると show アクションもビューもない。
(続きを読む…)
[symfony] askeet 3日目
03日目をやってみてどうもバージョンの違いのためかチュートリアルに書かれている内容と実際にいじっているコードで違いが結構あるのに気がついた。そこで今回から違う点についても少し書いておきます。(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
CakePHP1.2 バッチ処理
2CakePHP1.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 からの返り値をチェックしてその後の処理の分岐に使用できます。