'Programming/CodeIgniter'에 해당하는 글 26건

CLI

Programming/CodeIgniter 2011. 11. 12. 00:25

1. CLI(Command-Line Interface)를 통한 실행

브라우저에 URL로 Controller를 호출하며, 또한 CLI를 통해서도 로딩될 수 있습니다.
CLI는 터미널같은 텍스트 기반의 명령행 인터페이스를 말합니다.


2. CLI를 사용하는 이유?

  • wget, curl 등을 사용할 필요없이 cron 작업을 실행.
  • IS_CLI로 체크하여 URL에 로드되서 접근할 수 없는 cron 작업을 생성.
  • 캐쉬 디렉토리를 비우고, 백업을 만들고, 퍼미션을 지정하는 등의 작업을 생성.
  • 다른 언어들로 다른 어플리케이션과 통합 (임의의 C++ 스크립트는 Model에서 코드를 실행하고 명령어를 호출 가능)


3. Hello World!

$ vi application/controllers/tools.php
<?php
class Tools extends CI_Controller {
    public function message($to = 'World')
    {
        echo "Hello {$to}!" . PHP_EOL;
    }
}
?>

브라우저에서 URL로 접속해 봅니다.
domain.com/index.php/tools/message/oops
output is : Hello oops!

터미널을 열고 index.php 가 위치한 경로로 가서 URL 매개변수처럼 파라미터를 전달합니다.
$ php index.php tools message oops
output is: Hello oops!

이것은 커맨드 라인에서도 controllers에 대해 잘 알고 있다는 것이고, routing 과 _remap 역시 잘 작동할 것입니다.

WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

Profiler 클래스는 벤치마크 결과, 실행한 쿼리, $_POST 데이터를 페이지 하단에 보여줄 것입니다.
이 정보는 개발하는 동안 디버깅과 최적화에 유용하게 사용할 수 있습니다.
Profiler 클래스는 Output Class로부터 자동으로 로드되므로 최기화가 필요없고, 원하는 Controller 함수에 삽입합니다.

$this->output->enable_profiler(TRUE);

벤치마크 데이터를 컴파일하고 보여주기 위해서 특정 문법을 사용하여 벤치마크 포인트를 지정해야 합니다.
Profiler 섹션 설정은 두 가지 방법으로 가능합니다.

$ vi application/config/profiler.php
$config['config'] = FALSE;
$config['queries'] = FALSE;

$ vi application/controller/user_controller.php
$sections = array(
    'config' => TRUE,
    'queries' => TRUE
    );
$this->output->set_profiler_sections($sections);


사용 가능한 섹션에 접근 가능한 배열의 키.

  • benchmarks : 벤치마크 포인트와 전체 실행의 경과 시간 (default: TRUE)
  • config : CodeIgniter 설정 변수 (default: TRUE)
  • controller_info : Controller 클래스와 메소드 (default: TRUE)
  • get : 요청에 전달된 GET 데이터 (default: TRUE)
  • http_headers : 요청에 대한 HTTP 헤더 (default: TRUE)
  • memory_usage : 요청에 할당된 메모리양(Bytes) (default: TRUE)
  • post : 요청에 전달된 POST 데이터 (default: TRUE)
  • queries : 실행 시간을 포함한 데이터베이스 쿼리 리스트 (default: TRUE)
  • uri_string : 현재 요청의 URI (default: TRUE)
  • query_toggle_count : 쿼리 블록의 기본값, 쿼리의 수 (default: 25)

WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

Caching

Programming/CodeIgniter 2011. 11. 12. 00:09

CodeIgniter 는 최고의 성능을 위해 페이지를 캐시합니다.
페이지가 처음 로드되면 application/cache 디렉토리에 기록되며 기한이 만료되면 삭제됩니다.
페이지 로딩 속도를 보여주는 Benchmark 태그는 캐시되지 않습니다.

캐시를 사용하려면 controller 함수에 다음 태그를 넣습니다.

$this->output->cache(n);

n은 새로고쳐질 분(minute) 단위의 수로 입력합니다.

캐시 태그는 어떤 함수에서도 사용 가능하지만, 주로 출력을 생성하는 view를 가진 controller에서만 작동합니다.
캐시 사용시 application/cache 디렉토리에 쓰기 권한을 설정해야 합니다.
캐시 만료 전에 캐시를 삭제하고 싶을 때는 application/cache 디렉토리에서 직접 삭제합니다.

WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

CodeIgniter 는 아래 함수를 이용하여 에러 리포트를 생성합니다.

1. show_error('message' [, int $status_code= 500 ])

이 함수는 application/errors/error_general.php 템플릿으로 에러 메시지를 보여줄 것입니다.


2. show_404('page' [, 'log_error'])

이 함수는 application/errors/error_404.php 템플릿으로 에러 메시지를 보여줄 것입니다.
CodeIgniter는 show_404() 호출을 자동으로 기록하지만 log_error 를 FALSE로 지정하면 기록을 건너뛸 수 있습니다.


3. log_message('level', 'message')

이 함수는 로그 파일에 메시지를 기록하게 한다. 에러 메시지 타입은 debug, error, info 를 제공합니다.
  • error : PHP 에러 같은 실제 에러 메시지.
  • debug : 디버깅을 도와주는 메시지.
  • info : 가장 우선순위가 낮은 메시지.

if ($some_var == "") {
    log_message('error', 'Some variable did not contain a value.');
} else {
    log_message('debug', 'Some variable was correctly set');
}
log_message('info', 'The purpose of some variable is to provide some value.');

로그 파일을 기록하려면 "logs" 디렉토리에 쓰기가 가능해야 합니다.
로그 기록수준은 application/config/config.php 파일의 $config['log_threshold'] 에서 설정할 수 있습니다.

WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

URI routing

Programming/CodeIgniter 2011. 11. 11. 23:58

라우팅 규칙은 application/config/routes.php 에서 $route 배열을 통해 설정합니다.
와일드카드나 정규표현식으로도 설정할 수 있습니다.
URL 문자열인 mydomain.com/class/function/id 규칙을 변경하고 싶을 때 재매핑(_remap) 함수를 사용합니다.

와일드카드(*)

$route['journals'] = "blogs";
$route['blog/joe'] = "blogs/users/34";
$route['product/:any'] = "catalog/product_lookup";
$route['product/(:num)'] = "catalog/product_lookup_by_id/$1";

:num 은 숫자만 매치
:any 는 어떤 문자든 매치
URL 요청을 받으면 우측의 주소로 재매핑 되며, 마지막 예제의 (:num)는 $1로 전달됩니다.

세그먼트의 앞뒤로 슬래시를 사용하지 않고, 라우트는 상위에 설정된 것이 우선 실행됩니다.
이미 지정된 경로는 다른 라우터들보다 상단에 위치해야 합니다.

$route['default_controller'] = 'welcome';
$route['404_override'] = '';

WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  0개가 달렸습니다.
secret