'php'에 해당되는 글 7건

  1. 2009/07/17 2009년 7월 16일 - sunyruru 미투데이 일기장
  2. 2009/07/07 PHP - Detects what compression file uses
  3. 2009/03/27 ADO.NET for SQLite
  4. 2009/03/23 sunyruru의 미투데이 - 2009년 3월 22일
  5. 2009/02/01 PHP on IIS 7.0, 6.0, 5.1 with Fast CGI
  6. 2007/05/25 PHP : natsort() Natural order sorting 로 숫자를 제대로 정렬
  7. 2007/05/22 PHP 성능 최적화를 위한 방향
2009/07/17 04:32

2009년 7월 16일 - sunyruru 미투데이 일기장

이 글은 sunyruru님의 2009년 7월 16일의 미투데이 내용입니다.

크리에이티브 커먼즈 라이선스
Creative Commons License
올블로그추천버튼 블코추천버튼 블로그뉴스추천버튼 믹시추천버튼 한RSS추가버튼 구글리더기추천버튼


이 포스팅이 도움이 되었다면 구글에서 관련 정보를 찾아 보세요 ^^


Trackback 0 Comment 0

Trackback : http://i-ruru.com/trackback/482 관련글 쓰기

2009/07/07 00:35

PHP - Detects what compression file uses


유명한 MySQL 관리 툴이죠. phpMyAdmin 소스를 보던 중 좋은 내용을 발췌합니다.

libraries\import.lib.php 파일에 있던 내용이고요.

코드는 아래와 같습니다.



/**
 *  Detects what compression filse uses
 *
 *  @param  string filename to check
 *  @return string MIME type of compression, none for none
 *  @access public
 */
function PMA_detectCompression($filepath)
{
    $file = @fopen($filepath, 'rb');
    if (!$file) {
        return FALSE;
    }
    $test = fread($file, 4);
    $len = strlen($test);
    fclose($file);
    if ($len >= 2 && $test[0] == chr(31) && $test[1] == chr(139)) {
        return 'application/gzip';
    }
    if ($len >= 3 && substr($test, 0, 3) == 'BZh') {
        return 'application/bzip2';
    }
    if ($len >= 4 && $test == "PK\003\004") {
        return 'application/zip';
    }
    return 'none';
}

저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
올블로그추천버튼 블코추천버튼 블로그뉴스추천버튼 믹시추천버튼 한RSS추가버튼 구글리더기추천버튼


이 포스팅이 도움이 되었다면 구글에서 관련 정보를 찾아 보세요 ^^


Trackback 0 Comment 0

Trackback : http://i-ruru.com/trackback/473 관련글 쓰기

2009/03/27 11:35

ADO.NET for SQLite

  • ADO.NET 2.0 Provider for SQLite: .NET Compact Framework 지원
  • Simple C# Wrapper for SQLite
  • SQLite는 일반적으로 PHP 등에서 먼저 채택해서 많이 알려준 Database인데요

    .NET C# 에서도 소형의 Database 면서 강력한 SQLite DB를 사용하려면 어떻게 해야할지 갑자기 궁금증이 생겨서 찾아봤더니 위와 같은 주소가 있더군요.

    두 링크는 각각 다른 역할 입니다.

    먼저 첫번째 ADO.NET 2.0 Provider for SQLite는 .NET 환경에서 SQLite를 이용하여 개발하기 위한 Provider 고요.
    ADO를 통해서 SQLite에 접속하려면 이 Provider가 있어야 가능하겠죠.

    그리고 두번째 링크는 필수 항목은 아니지만 SQLite를 조금 더 편하게 사용하기 위한 Wrapper Library입니다.

    ADO.NET을 이용해서 DB는 필요한데 부담스러운 경우가 많죠.

    사용자 환경에 데이터가 저장되어야 하는 가계부나 일기장 이런 프로그램은 확실히 사용자 환경에 DB가 있어야 할겁니다.

    기존에 Access에서 이용하던 MDB같은 좋은 애들도 있지만 MDB 보안 문제 등 문제점도 있어서 MDB를 이용하지 않고 SQLite를 이용해 보는것도 좋을 것 같네요.

    뭐 아직 저도 SQLite를 이용한 개발은 안해봤지만요 -_ -;;

    나중에 위 자료를 이용한 개발을 하게되면 테스트 예제를 별도로 포스팅 하도록 하고 이만 마칩니다.

    저작자 표시 비영리 변경 금지
    크리에이티브 커먼즈 라이선스
    Creative Commons License

    '.NET > ADO.NET' 카테고리의 다른 글

    ADO.NET for SQLite  (0) 2009/03/27
    LINQ to SQL Debug Visualizer  (0) 2007/08/08
    올블로그추천버튼 블코추천버튼 블로그뉴스추천버튼 믹시추천버튼 한RSS추가버튼 구글리더기추천버튼


    이 포스팅이 도움이 되었다면 구글에서 관련 정보를 찾아 보세요 ^^


    Trackback 0 Comment 0

    Trackback : http://i-ruru.com/trackback/435 관련글 쓰기

    2009/03/23 04:31

    sunyruru의 미투데이 - 2009년 3월 22일

    이 글은 sunyruru님의 2009년 3월 22일의 미투데이 내용입니다.

    크리에이티브 커먼즈 라이선스
    Creative Commons License
    올블로그추천버튼 블코추천버튼 블로그뉴스추천버튼 믹시추천버튼 한RSS추가버튼 구글리더기추천버튼


    이 포스팅이 도움이 되었다면 구글에서 관련 정보를 찾아 보세요 ^^


    Trackback 0 Comment 0

    Trackback : http://i-ruru.com/trackback/437 관련글 쓰기

    2009/02/01 03:21

    PHP on IIS 7.0, 6.0, 5.1 with Fast CGI

     

    FastCGI 가 이제 IIS 7.0 뿐 아니라 6.0, 5.1에서도 지원하는 HTTP Handler가 나온 것 같네요.

     

    PHP on IIS : The Official Microsoft IIS Site

    위 링크에 영문이지만 각 버전에 맞게 자세한 설정 방법과 MySQL 등 기타 연결된 정보도 제공하고 있군요.

     

    FastCGI 를 이용한 PHP와 같은 스크립트 언어 제공 성능향상이 7.0에서 높은 점수를 받았는데,

    6.0, 5.1 버전에서도 좋은 성능을 낼지 궁금하네요.

     

     

    다운로드 파일은 x86, x64 두가지를 제공합니다.

    (다운로드 링크는 MS Download 사이트의 페이지를 스크랩했습니다.)

    fcgisetup32.msi    635 KB    Download

    fcgisetup64.msi    691 KB    Download

    ref. http://www.microsoft.com/downloads/details.aspx?FamilyID=2d481579-9a7c-4632-b6e6-dee9097f9dc5&DisplayLang=en

     

    PS. 기타 궁금하신 사항은 아래 포럼을 참조해주세요~

    http://forums.iis.net/1102.aspx (english)

    저작자 표시 비영리 변경 금지
    크리에이티브 커먼즈 라이선스
    Creative Commons License
    올블로그추천버튼 블코추천버튼 블로그뉴스추천버튼 믹시추천버튼 한RSS추가버튼 구글리더기추천버튼


    이 포스팅이 도움이 되었다면 구글에서 관련 정보를 찾아 보세요 ^^


    Trackback 0 Comment 0

    Trackback : http://i-ruru.com/trackback/394 관련글 쓰기

    2007/05/25 11:01

    PHP : natsort() Natural order sorting 로 숫자를 제대로 정렬

    꽤 유용한 함수를 발견했습니다.

    사실 이전부터 있었던 거지만 잘 사용하진 않았네요...

    natsort는 배열을 사람이 정렬한것 처럼 구현해주는 알고리즘입니다. 사람이 정렬한것처럼 보여지는 알고리즘을 "natural ordering" 이라고 합니다.
    예제 코드를 보시고 사용법을 확인해 보시기 바랍니다. ^^
    예제는 PHP 메뉴얼에서 ^^;

    Source :

    <?php
    $array1
    = $array2 = array ("img12.png", "img10.png", "img2.png", "img1.png");

    sort($array1);
    echo
    "Standard sorting\n";
    print_r($array1);

    natsort($array2);
    echo
    "\nNatural order sorting\n";
    print_r($array2);
    ?>

    Output:
    Standard sorting
    Array
    (
        [0] => img1.png
        [1] => img10.png
        [2] => img12.png
        [3] => img2.png
    )
    
    Natural order sorting
    Array
    (
        [3] => img1.png
        [2] => img2.png
        [1] => img10.png
        [0] => img12.png
    )

    Natural Ordering에 대한 자세한 내용은 http://www.naturalordersort.org/ 참조하세요 ^^/"
    크리에이티브 커먼즈 라이선스
    Creative Commons License
    올블로그추천버튼 블코추천버튼 블로그뉴스추천버튼 믹시추천버튼 한RSS추가버튼 구글리더기추천버튼


    이 포스팅이 도움이 되었다면 구글에서 관련 정보를 찾아 보세요 ^^


    Trackback 0 Comment 0

    Trackback : http://i-ruru.com/trackback/42 관련글 쓰기

    2007/05/22 12:55

    PHP 성능 최적화를 위한 방향

    웹사이트 성능에 큰 영향을 주는 부분은 대개 부적절한 혹은 최적화되지 않은 데이터베이스 쿼리문에 있습니다.
    하지만 데이터베이스 쿼리문이 최적화되었더라도 PHP 프로그램내에서의 간단한 몇가지 수정으로도 좀더 성능 개선을 할 수 있습니다.
    해외 PHP관련 컨퍼런스등에서 여러번 제시된적 있는 몇가지 성능 튜닝을 위한 유용한 팁을 올립니다.



     1. 최대한 쌍따옴표 대신에 일반따옴표를 쓴다.

    쌍따옴표로 감산 문자열의 경우 PHP는 문자열 전체를 처리하게 됩니다.
    따라서 처리되지 않고 그대로 유지될 혹은 나중에 처리되어야할 문자열의 경우 일반따옴표를 쓰는 것이 좋습니다.

    예) $string = '문자열';

    문자열 중간에 변수가 삽입될 경우에도 최대한 일반 따옴표를 쓰는 것이 좋지요.

    예) $string = '문자열1' . $string2 . '문자열2';

    참고로 성능튜닝은 아니고 코딩스타일인데, 쌍따옴표로 감싼 변수가 삽입된 문자열의 경우 변수는 { 와 }로 감싸주는 것이 좋습니다.
    이 경우 객체변수나 배열변수 혹은 배열+객체변수도 삽입 가능합니다.

    예) $string = "문자열1 {$string2} 문자열2 {$object->var} 문자열3 {$array[0]} {$array[1]->var}";

    주의할 점)
    아시겠지만 문자열에 일반따옴표가 들어갈 경우 따옴표마다 앞에 역슬래쉬로 escape시켜줘야 하는 점입니다.
    쌍따옴표는 그대로 표현하면 됩니다.
    이런 문자열변수를 eval로 처리할 경우에는 미리 str_replace() 함수로 쌍따옴표 앞에 역슬래쉬를 붙여주는 작업이 필요하게 됩니다.
    이러한 점만 숙지한다면 큰 문제는 없을 것입니다.



     2. 루프문에서 함수 사용은 금물

    for ($i=0; $i<count($array); $i++) {

    위와 같은 for 루프문들이 쓰이는 것을 곧잘 볼 수 있습니다.
    PHP의 for 루프문, 두번째 인자의 함수는 매 루프마다 불려지기 때문에
    배열이 클수록 함수를 부르는데 걸리는 시간만으로도 실행 시간을 상당히 뺏기게 됩니다.
    이는 다음과 같이 바꿔주는 것이 좋습니다.

    예1) for ($i=0, $cnt=count($array); $i<$cnt; $i++) {

    예2)
    $cnt = count($array);
    for ($i=0; $i<$cnt; $i++) {

    이 방법만으로도 엄청난 성능 개선을 가져왔다는 예도 있습니다. 배열이 무척 컸나보네요^^;
    추가: 실제로 저의 경우에도, 엄청나지는 않았지만 꽤 괜찮은 성능개선을 맛봤었답니다 :)



     3. 버퍼링

    기본적으로 PHP의 버퍼 크기가 8K이기때문에 결과물이 크면 나누어서 보내야 하기에 I/O 시간만으로도 상당한 시간을 잡아먹게 됩니다.
    하지만 버퍼링으로 결과물을 모았다가 한꺼번에 뿌려주게 되면 다른 방법들을 쓰지 않더라도 몇배의 성능 개선도 가져올 수 있습니다.

    간단히 스크립 처음에 마지막에 각각 ob_start() 와 ob_end_flush() 를 추가해주기만 하면 됩니다.

    그냥 ob_start() 대신 ob_start('ob_gzhandler') 로 추가할 경우 (PHP에 gzip 모듈이 올라와 있어야 합니다.)
    대부분의 웹브라우져가 압축을 지원하므로 트래픽양을 줄일 수 있고 결과적으로 클라이언트의 화면에 페이지가 뜨는데 걸리는 시간이 단축됩니다.
    이 방법을 쓰더라도 웹브라우져가 압축을 지원하지 않으면 압축을 하지 않고 보내므로 따로 압축을 지원하는지 안하는지 확인할 필요도 없습니다.



     4. 옵코드 캐싱

    PHP의 젠드엔진은 PHP코드를 자체적인 옵코드로 컴파일한 후 실행을 합니다.

    이 부분에서도 로드가 높은 사이트에서는 상당한 오버헤드가 일어날 수 있습니다.

    따라서 PHP코드를 새로 컴파일해서 실행하는 것보다는 기존에 컴파일된 옵코드를 바로 실행하면 많은 실행속도를 단축시킬 수 있습니다.

    이는 옵코드 캐시 모듈을 적재해야 하기 때문에 모든 곳에서 적용하기는 힘들 것입니다.

    하지만 제가 알기론 대부분의 호스팅회사에서는 젠드옵티마이저를 적재하기 때문에 따로 신경쓰지 않으셔도 될것입니다.

    만약 서버관리권한이 있거나 한다면 다른 옵코드 캐싱 모듈을 써보실 것도 권해드립니다.

    APC(Advanced PHP Cache), Eaccelerator 혹은 현재는 개발 중단된 Turk-MMCache 등이 있는데, APC는 PECL로 설치가 가능하며 상당히 좋습니다.

    Eaccelerator가 성능은 좀더 낫다는 것 같지만요. 이는 직접 테스트 비교해보는 것이 좋을 것입니다.

    주의할 점은 젠드옵티마이저를 사용하지 않으면 젠드컴파일러로 컴파일된 바이너리는 실행하지 못한다는 단점이 있습니다.

    컴파일된 상용 php프로그램 사용시에는 다른 방법이 없습니다..^^;;; 

     

     5. Regular Expression : POSIX Extented(ereg_) VS. Perl-Compatible(preg_)

    대부분의 속도비교결과 Perl-Compatible 정규표현식이 조금 더 빠르다고 합니다. perl호환 정규표현식을 사용하기를 권장합니다.



     6. 정규표현식 VS. str_replace()

    간단한 문자 치환의 경우에는 str_replace() 함수를 쓰는 것이 훨씬 빠릅니다.
    복잡한 따라서 정규표현식을 꼭 써야하는 경우를 제외하고는 PHP 기본문자함수를 쓰는 것이 좋습니다.



     7. is_numeric(), is_integer()등 VS ctype_XXX()

    변수의 형식을 체크할 시 기본 PHP함수보다 ctype이 더 빠르다고 합니다.
    대신 ctype으로는 11가지 형식에대한 체크만 가능하다는 한계가 있으므로 자세한 것은 PHP매뉴얼을 참조하시길 바랍니다.
    ctype은 PHP 매뉴얼에서 Character Type Functions 항목입니다.



    출처 : http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=49020
    크리에이티브 커먼즈 라이선스
    Creative Commons License
    올블로그추천버튼 블코추천버튼 블로그뉴스추천버튼 믹시추천버튼 한RSS추가버튼 구글리더기추천버튼


    이 포스팅이 도움이 되었다면 구글에서 관련 정보를 찾아 보세요 ^^


    Trackback 0 Comment 0

    Trackback : http://i-ruru.com/trackback/41 관련글 쓰기