cakephp2.doc_081
最終投稿日:2019年11月20日
/app/Console/Command に作成する。(例)BatchShell.php)
<?php
//コンポネントを使用した場合のお約束?
App::uses('ComponentCollection', 'Controller');
//使用したいコントローラを読み込む
App::uses("UsersController","Controller");
//使用したいコンポネントを読み込む
App::uses("MyCsvCreateComponent","Controller/Component");
class BatchShell extends AppShell{
var $controller = null;
//使用したいモデルを宣言
public $uses = array('User','Syumi');
//スタートアップでコンポネントのインスタンスを作成する
function startup(){
parent::startup();
$collection = new ComponentCollection();
$this->MyCsvCreate = new MyCsvCreateComponent($collection);
}
//実行されるアクション
function mylog(){
//[app][tmp][logs][debug.log]にLog を吐くだけ
$this->log("hoge", LOG_DEBUG);
}
}
?>
<手動でファイルが動くか確認>
/usr/local/bin/php /home/hoge/cake2/lib/Cake/Console/cake.php batch mylog -app /home/hoge/cake2/app
batch BatchShell.php を指定している
mylog mylog アクションを実行する
ファイル作成後、上記コマンドを実行しプログラムが動けばとりあえずOK
例)Windows
C:\xampp\php\php.exe C:\xampp\htdocs\cakephp2\lib\Cake\Console\cake.php
batch mylog -app C:\xampp\htdocs\cakephp2\app
<shellの作成>
/app/Console/Command に作成する。(cron.sh)
#! /bin/sh
/usr/local/bin/php /home/hoge/cake2/lib/Cake/Console/cake.php batch mylog -app /home/hoge/cake2/app
//手動でつかったコマンド
shellファイルは実行権限にする。
/home/hoge/cake2/app/Console/Command/cron.sh ※手動で動けばとりあえずOK(未確認)
【メモ】
モデルを指定し検索等はできるが、コンポーネントからの制御で「$this->name」が取得できなかった。
【サンプルソース】
起動すると、CSVをサーバに保存する。
[app][Console][Command]
<?php
//コンポネントを使用した場合のお約束?
App::uses('ComponentCollection', 'Controller');
//使用したいコントローラを読み込む
App::uses("UsersController","Controller");
//使用したいコンポネントを読み込む
App::uses("MyCsvCreateComponent","Controller/Component");
class BatchShell extends AppShell{
var $controller = null;
//使用したいモデルを宣言
public $uses = array('User','Syumi');
//スタートアップでコンポネントのインスタンスを作成する
function startup(){
parent::startup();
$collection = new ComponentCollection();
$this->MyCsvCreate = new MyCsvCreateComponent($collection);
}
//実行されるアクション
function mylog(){
$this->autoRender = false;
$this->User->recursive = 0;
$datas = $this->User->find("all",array("conditions"=>array()));
$cavPrams = array();
$cavPrams["jp"] = array(
"ID","アカウント名","パスワード","氏名","フリガナ","有効フラグ","登録日","更新日");
$cavPrams["title"] = true;
$cavPrams["path"] = array("C:/xampp/htdocs/cakephp2/app/tmp/","hoge");
$cavPrams["quart"] = true;
$cavPrams["encode"] = "SJIS";
/********************************************************************************************
* 第1引数
* 通常のfind all で取得したテーブルデータ $data[0]["User"]["id"]
* 第2引数 連想配列
* ["jp"] = array() 存在する場合は、1行目に日本語タイトルを使用する
* ["title"] = bool false で1行目からデータ行とする(デフォルト true)
* ["path"] = ファイル保存先(第1 = / で終わる,第2 = 拡張子なし) 第1="" の場合はダウンロードとなる
* ["quart"] = bool ture で項目を『"』で囲う(デフォルト true)
* ["encode"] = string UTF8から変換したい文字コード指定(例:SJIS)
*
* 【注意】
* ダウンロードの場合は、Controller 側で『$this->autoRender = false;』する事
*********************************************************************************************/
$this->MyCsvCreate->createCsv($datas,$cavPrams);
}
}
?>