cakephp2.doc_081
R e i - D r e a m
for Laravel
TOP > CakePHP2 > Sample関連(Batch)
Guest
login

最終投稿日:2019年11月20日

Sample関連(Batch)
CakePHP2.x
/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);
            }
        }
    ?>
            
ログインしてコメントを残そう!!


レンズモード 【新規購入限定用】
きっぷる