Jumaat, 30 Julai 2010

CakePHP : Menggunakan Shell dan Folder Utility

Bayangkan anda perlu memproses log fail dari Apache Access Log dan System Admin telah membuat rotation. Setiap log file mempunyai beratus ribu row, dan ada mempunyai beratus-ratus file yang perlu diproses .....

Setup Cake CLI dalam Windows
===================================================
1. Copy fail APP/cake/console/cake.bat ke dalam c:\WINDOWS\cake.bat
c:\windows\cake.bat ( pastikan setting anda betul )

/usr/bin/cake di dalam Linux CentOS


Memperkenalkan CakePHP Shell CLI dan Folder Utility
===================================================
 Untuk mengikuti tutorial ini, pastikan anda boleh melaksanakan arahan cake bake.

1. Cipta fail APP/vendors/shell/proses_data.php
class ProsesDataShell extends Shell {

  function main() {
    $this->out('Hello World!');
  } 
}
?>

2. Mari kita cuba run fail tersebut di dalam APP. Laksanakan arahan berikut
cake proses_data

Hasilnya :



Paparan Hello World berjaya dikeluarkan menggunakan arahan $this->out('Hello World');. Di dalam fail proses_data.php, Convention yang perlu diikuti ialah, nama Class mesti dalam berbentuk camelCase. Contohnya :
1. class ProsesData extends Shell
2. class UserManagement extends Shell
3. class FetchFile extends Shell

Nama fail mesti mengikut format variable kepada nama Class, contohnya
1. proses_data.php
2. user_management.php
3. fetch_file.php

Dan fail-fail ini mesti disimpan di dalam folder APP/vendors/shell/*

Method main() di dalam file tersebut akan dijalankan secvara automatik.


Cipta Sistem Dialog
==========================================
class ProsesDataShell extends Shell {

  function main() {

    $this->out('Hello World!');

    $this->hr();

    $path = null;
    while (!is_dir($path)) {
      $path = $this->;in('Directory :');
      if (!is_dir($path)){
       $this->out('Invalid directory!');
      }else{
       $this->out('Valid directory!');
      }
    }
  }
} 
?> 

Save fail proses_data.php dan run kembali. Hasilnya, anda akan dapat dialog samaada Valid directory atau Invalid Directory.

$this->hr() akan paparkan line seperator
$this->in() akan menerima input dari user



Memperkenalkan Folder Utility
Seterusnya, saya ingin listkan semua fail dalam direktori yang dinyatakan. Jadi saya perlu import utility class bernama Folder
class ProsesDataShell extends Shell {

  function main() {

    $this->out('Hello World!');

    $this->hr();

    $path = null;
    while (!is_dir($path)) {
      $path = $this->in('Directory :');
      if (!is_dir($path)){
       $this->out('Invalid directory!');
      } else {
       $this->out('Valid directory!');

       # senaraikan fail dalam direktori
        uses('Folder');
        $folder =& new Folder();
        # read directory
        $folder = new Folder($path);
        $files = $folder->read();
        foreach($files as $f){
                foreach($f as $k => $v ){
                        # only show we_access
                        $this->out($v);
                }
        }
      }
    }
  }
}
?>

Save fail di atas, dan cuba run.

Sekian setakqat ini tutorial menggunakan CakePHP Shell dan Folder

Tiada ulasan:

Catat Ulasan