조은호 홈페이지

| 한의학 정보 | 건강 정보 | 카메라와 캠코더 | 홈페이지 관련 | 컴퓨터 관련 | 디자인 세상 | 기독교 신앙 | G12/Cell | 물생활 |
| 도시 정원 | 문화 | 생활 체험 정보 | 오늘도 말씀과 함께 | 포토 겔러리 | 동영상 겔러리 |
| 조은호 정송화 (가족 홈) | 리동철 유미현 | 동사무소 |
| 용정 복지관 후원회 | 입주 홈페이지 | 사이트 맵 |


 아이디 
패스워드

 
로그인 안될 때

홈페이지 관련


전체 메뉴 목록
|| 홈페이지 내 현재 위치 ▶ 조은호 홈페이지 > 홈페이지 관련 > Php || 사이트 맵 이동(move to sitemap)

12   1/1

 내용보기

작성자


조은호 (2004-03-27 00:03:39)

홈페이지

http://www.urhelper.com

Link#1

http://blog.naver.com/sosa511.do?Redirect=Log&logNo=40001457998

제목


PHP 프로그램 속도 올리는 20가지
★ 무조건 알아야 할 PHP 속도 테스트 20 가지 ◆◇◆◇◆◇      



이 속도 테스트 보다 더 중요한 것이 PHP보안 입니다. 보안이 가장 중요함당 !!!



PHP로 코딩 함에 있어서 알아야 할 속도 테스트 입니다.

조금더 빠른 PHP 속도를 유지 하기 위한 것이죠 ^^



작은 것이 모여서, 대따 오랜 시간이 걸릴 수 가 있는 것 입니다. !!

되도록이면 속도가 빠른 것을 사용하시는 것이 좋습니다.



물론 함수 마다 기능 마다 장단이 있지만요....^^



다른 비교가 있으면 알려주셍 ^^ 답변 달아 주세용 ^^

계속 적으로 업글 됩니다.



★ mysql 총 게시물 수 세기



<?php
    $numresults=mysql_query("select code from $board");
    $numrows=mysql_num_rows($numresults);
    //2초 이상 ...게시물 10만개
?>

VS

<?php
    $numresults=mysql_query("select count(code) as code from $board");
    $row_num=mysql_fetch_array($numresults);
    $numrows=$row_num[code];
// 0.2  ...게시물 10만개
?>

아래것이 훠얼씬 빠름다..
도대체 mysql_num_row() 는 왜 만들어 놓은 것일까용???







★ mysql_fetch_row  > mysql_fetch_array >>> mysql_result 입니다.





row 가 array 보다 약간 빠르고, result 보다는 훠얼씬 빠름당 ^^

row 는 불편한게 숫자로 칼럼을 불러와서 불편합니다.
array 가 약간 느리지만, 문자 칼럼을 불러 올 수 있으니 array 쓰는 것도 양호 ^^

아직도 mysql_result() 를 사용하시나요?





★print , echo ,printf 함수 속도 비교


HTML 출력 >> echo > print >> printf


print 와 printf 함수는 복잡한곳에 적격이고, 약간 느리다.

echo 는 단순한곳에 적격이고...빠르다.
printf 는 형식화된 출력을 해주므로 그래도 좋죠 ^^





★  인라인




a.php
<?php
    $aa="sdsdsdsd";
    echo ("
      <table>
      <td> $aa </td>
      </table>
      ");
?>

위 랑..


b.php
<?php $aa="sdsdsdsd"; ?>
<table>
<td><?=$aa;?></td>
</table>


랑 도대체 어케 코딩 하느냐죠 ?

솔직히 코딩은 a.php 가 편합니다.
<?php ?> 를 한번 만 쓰니까 효율적일 수 있습니당..

그러나 아무리 아무리 PHP가 빠르다고 해도 HTML 이 더 빠릅니당.. !!!

쿠쿠쿠

b.php 처럼 코딩 하는 습관을 가지세용 ^^

변수가 많아 질 경우 b.php 파일이 느립니다.
그러나 소스 코드 분리 측면에서는 b.php 파일 형태가 좋습니다.

이 부분은 여러분들이나 저나 각종소스를 가지고 연구해 봐야만 할검당 ^^








★ zend cache , APC ,Bware 캐쉬 비교


Zend cache > APC > Bware

zend cache 는 캐쉬 입니다. 울나라에서 포탈에서도 몇군데 사용하죠.
PHP 프로그램 변환 없이 속도를 빠르게 해 줍니다. ^^

zend cache 를 살 돈이 없으시다구용?
그러면 APC 나 zend optimizer 를 반드쉬 설치 하세용 !!

■ 그런디 Zend Cache 만한 무료 캐쉬가 나왔다고 합니당...^^
http://www.php-accelerator.co.uk/index.php

도대체 캐쉬의 작동 원리는 어케 되는가?

캐쉬는 여러가지로 작동 할 수 있습니다.
가장 많이 아는 것이 메모리에 페이지를 띄워 놓고 읽어 오는 것입니다.
하드에서 읽는 것 보다 빠르기 때문이죠.

그리고 HTML 로 만드는 것도 캐쉬 입니다.조금 더 빠르다면 캐쉬 라고 할 수 있습니다.
게시판 목록 보기 페이지는 디비 연결이 많습니다. 쓰기 보다 , 읽기가 20배 정도 많습니다.
게시판을 마니 운영해 봤다면 아시겟죠 ^^?

그래서 게시판 목록을 HTML 로 저장 시키고, 쓰기, 삭제 가 있을때 마다 HTML 로 만들어 주는 것 입니다.
그러면 디비 부하는 상당히 줄어 듭니다.

또는 코딩을 할때 enter 이나 tab 키를 많이 사용해서 합니다.
저번에 본 캐쉬는 enter 이나 tab 키를 없에 주는 캐쉬 였습니다.
enter 이나 tab 를 없엘 경우 최대 1-2k 정도 절약이 되죵 ^^








★ ereg_replace <<<  preg_replace 정규표현식


ereg_replace () 가 장난 아니게 느림다.
40개 정도 변환 하는데 1초나 걸려요.preg_replace 는 0.3초 정도요.

되도록이면 preg_replace() 를 사용하세요 !!!

www.php.net/preg_replace

tood.net preg_replace 강좌
http://www.tood.net/tood/toodboard/toodread.php?board=tootech&tcode=907








★ foreach , list 함수 속도 차이 35%


foreach($string as $a);  >>>  while(list(,$a) = each($string));

foreach() 를 사용하는 것이 35% 정도 빠릅니다...!!





★ explode() Vs split() Vs preg_split


explode() 와  split() 와 preg_split 는 문자열을 자르는 함수 입니다.

테스뚜 해보시면 아시겟지만 explode() 가 훨 빠릅니당..!!!
70% 정도 빠릅니다.









★mysql_connect Vs mysql_pconnect


서로 장단이 있다 합니다.

mysql_pconnect 가 더 빠르다고 합니다.
persistant

메뉴얼에 영구적인 이렇게 되어 있으니까요..
일정시간 동안 mysql 을 열어 놓기 때문에, 다시 열 필요가 없어서 빠르다고 합니다.

단점은 계속 열기 때문에 메모리를 많이 잡아 먹슴당...^^
mysql_pconnect 경우는 최소 메모리가 1G 이상 되어야 사용하시는 것이 좋습니다.







★ 큰따옴표(") , 작은 따옴표(')


큰따옴표는 PHP가 파싱을 합니다. 그러나 작은 따옴표는 파싱을 하지 않습니다.
작은 따옴표를 사용하시는 것이 빠릅니다.

코딩시 echo ' test '.$aaa.' tood ';
요런식으로 하시는 게 가장 빠름당 !!







★ mysql 데이터 저장 공간 크기 ?



id int(11) unsigned NOT NULL auto_increment,
   bbs smallint(5) unsigned NOT NULL,
   lens mediumint(8) unsigned NOT NULL,
  

int 도 무자게 많슴당..
각각의 크기에 맞게 하는 것이 속도가 빨라 집니당 ^^

not null 를 주는 것도 속도가 빨라 집니당..

작은 사이트 조회수 경우 1만을 넘기도 힘듭니다. 그럴 경우 smallint 를 사용하시면 됩니다.







★ where 절에 모든 것은 인덱스를 걸어라 !!!


mysql 에서 쿼리시에 where 절에 사용되는 비교의 칼럼은 반드쉬 인덱스를 거세용 !!!

mysql 인덱스 가 여러 분들의 게시판 속도를 업 시켜 줍니당 !!







★메인페이지에서 속도를 빠르게 하려면, .htm 으로 만드는 것이 좋습니다.


그러니까..제 사이트 페이지 오른쪽 에는 모두 최신 게시물로 디비를 불러오는 부분
입니다.

디비 연결은 부하를 줄 수 있습니다.

그러니까..이예는 사이트가 상당히 활성화된 사이트일 경우 입니다.

하루에 2번 정도 .htm 으로 만들어 페이지를 업시키는 것이 좋습니다.
아무리 PHP가 빨라도 HTML 보다는 빠르지 않습니다.. !!!

HTML 로 만드는 것은 생각 할것이 게시판 목록수 만큼 파일이 생성이 됩니다. 1만개 게시물이면 1만개 HTML
이 생기죠. 그런데 조회수가 보통 1000-3000 을 넘는 게시판 경우는 효율성이 중대 됩니다.
그러나 조회수가 100 비스므리 하다면...생각해봐야 합니다.

그러기 위해서는 ★cron 를 알아야 합니다 PHP강좌 게시판에서 cron 으로 검색하세용 !!
윈도우 사용자는 멀 쓰는지 잘 모르겠슴당...아시면 답글 부탁  ^^







★ 초보자 Vs 전문가


www.zend.com 에서 제가 2000년 5월에 퍼온건데용 ^^  
함 주석을 붙일까 해서용^^


Beginner vs Experienced    
Author:  Boaz Yahav    
Date  23/05/2000    

Beginner : echo "$var";  
Experienced : echo $var;  


Beginner:echo "<a href=\"http://www.php.net\">PHP</a>";  ;
Experienced : ?><a href="http://www.php.net">PHP</a> color="#0000CC"><?  ... ?>  

◆ "(따옴표) 가 굉장히 중요한것이라는 한 대목이죵 ^^
전 보통의 경우 php 변수 값이 들어갈 경우는 초보자 처럼 쓰구요 ^^ 안들어 갈 경우 는 전문가 처럼 씀다.

Beginner : $a[0]=1; $a[1]=2; $a[2]=3;  
Experienced : $a = array(1,2,3, 1);  
둘다 사용하는 데요. 전문가 쪽이 편함다. ^^

Beginner : if($a>1) { $b=2; } else { $b=3; }  
Experienced : $b = ($a>1) ? 2:3;  
요건 완존히 소스 어렵게 짜는 넘이 최고 라는 소리 같네용 ^^
전문가 쪽것은 C 언어 에서 배웠는데도 역시 전 if 씀다. ^^

Beginner : $result=mysql_query(...);  
Experienced: $result=mysql_query(...) OR die    
        (mysql_error());  

요즘 들어 새삼 전문가 쪽으로 씀다.^^
보통의 경우

<?php

$result=mysql_query(...)  
if (!$result)
{
     echo error()."<P>";
     echo errno();
}
?>

이렇게 사용함다. ^^

or 이 설명이고 no 가 에러 번호 일 검다. ^^







★MySQL,ADODB,PHPLib,PEAR 벤치마킹  


ADODB > PHPlib > PEAR

MySQL     1.14      -
ADODB     1.45     27%
PHPLib    1.60     40%
PEAR     2.87     152% (fetchInto)

MySQL,ADODB,PHPLib,PEAR  는 모두 데이터베이스 인가요? 당근 아닙니다.
MySQL만 데이터베이스 구요.
ADODB,PHPLib,PEAR 는 PHP 프로그램 입니다.

3개 다 MySQL연결을 편하게 하는 클래스 프로그램 입니다.
그런디 벤치 마킹 결과 MySQL 에서 직접 쿼리하는 것 다음으로 ADODB 가 뽑혔슴당 ^^

PEAR 가 굉장히 늦군요. PEAR DB 나 ADODB 를 사용해 보았는데, 움..역시나 ADODB 가 좋군요.
오라클, mysql , ms sql 연결시 1개의 API 만 사용할 수 있는 프로그램 들 이 PEAR 과 ADODB 입니당 ^^





★ 페이지 네비게이션- 페이지 분활


페이지 분활도 속도 차이가 납니다. 각각의 페이지 분활을 테스트 해보시면 아시겟지만,
10만개,20만개의 데이터를 넣어 보세요. 빠른것은 0.03초 정도, 느린것은 3초나 걸립니다.

인덱스를 걸어서 빨리 뜨는데, 머가 늦는 걸까 했는데, 페이지 네비게이션 알고리즘이 문제더군요. ^^






★ 속도 테스트는 어케 하는가 ? microtime() 사용하면 됩니다.



<?php

function pageTime($page) {
$mstart = explode(" ", $m);
$mend = explode(" ", microtime());
$mtime = ($mend[1] - $mstart[1]) + ($mend[0] - $mstart[0]);

echo " $m[1]  $mend[1]<P>";
echo " $m[0]  $mend[0]<P>";

print("tood.net 페이지 로딩 시간 : " . $mtime . " microseconds");
}
pageTime(basename($PHP_SELF));
?>
  





조금 더 빠른 쿼리


$sql = "SELECT table.column FROM table WHERE criteria LIKE $myrow[variable]";

아래 처럼 하면 파싱 되지 않기 때문에 아주 아주 쪼금 빨라 짐다..0.0000x 초;

$sql = "SELECT table.column FROM table WHERE criteria LIKE " . $myrow['variable'];





최적화 컴파일 옵션 사용 !


PHP counfigure 시에 최적화 방법 입니다.

http://www.tood.net/tood/toodboard/toodread.php?board=tootech&tcode=1070





참고 사이트


http://www.tood.net
http://www.zend.com
http://www.php.net
http://www.php.lt/benchmark/phpbench.php
http://www.phpbuilder.com
http://www.phpbuilder.com/columns/piergiorgio20010321.php3?print_mode=1

스팸방지코드 여기를 클릭해 주세요.    새로고침     

|| 간단한 답글 달기
:   : 위의 보안코드 입력 후 (비회원)
번호 제목 작성일 조회
12
 위지윅 에디터 종류 [659]
2011/03/18 8573
11
 GM 에디터 소스
2011/03/18 4970
10
 대용량 업로드를 위한 php.ini 설정
2010/09/14 3859
9
 사랑비 BGM 2.1 [7]
2009/11/05 4151

 PHP 프로그램 속도 올리는 20가지
2004/03/27 8429
7
 업로드(upload) 구현 소스 [247]╋
2004/03/26 8176
6
 다운로드(download) 구현 소스 [764]╋
2004/03/26 9837
5
 php 한글 메뉴얼 [2]
2004/03/26 6281
4
 페이지가 뜨는 속도 알아 보기.
2003/12/22 4920
3
 사랑향기 무료배포 카운터 [1]
2003/05/05 4599
2
 자기 홈 또는 서버 연지 며칠이 지났는지 알 수 있는 php 소스
2003/02/24 4053
1
 게시물 읽은 사람들 리스트 보여주기(수정) [1]
2003/01/09 3748
1

    일반 
  유투브 모바일 동영상 사이즈 링크 가로세로 비율 완벽해결 [출처] 유투브 모바... 
  SCM Music Player 
  Html 간단한 속성 
  도메인 서비스 가장 싼 업체 소개 합니다 
  구글이 지원하는 "무료 웹폰트" 
  무료 RSS 제공 사이트 및 소셜 네트워그 RSS 무료 포스팅 사이드 (추천) 
  블로그에 SNS 공유버튼 달기, 트위터 리트윗 버튼 + 페이스북 공유하기 버튼 ... 

    포토샵 
  JPG파일 여러장을 한장으로 합치기 (자동으로)  [684]
  [후보정] Adobe GAMMA 만가지고 모니터 셋팅하기 
  포토샵 젤리 스타일  [109]╋
  포토샵 100여가지의 스타일  [1]
  페이지 말린 효과를 만드는 필터 
  알아두면 유용한 73가지 포토샵팁!!  [1]
  채널의 모든것을 까발린다.  [764]╋

    Php 
  위지윅 에디터 종류  [659]
  GM 에디터 소스 
  대용량 업로드를 위한 php.ini 설정 
  사랑비 BGM 2.1  [7]
  PHP 프로그램 속도 올리는 20가지 
  업로드(upload) 구현 소스  [247]╋
  다운로드(download) 구현 소스  [764]╋

    자바 
  [script] 초간단 iframe크기 자동 조절하기  [679]
  홈페이지를 시작페이지 설정하기 소스  [1]
  날짜와 시간을 넣는 자바 소스입니다.. 
  도메인마다 다른 페이지로 연동되게 할수가 없나요?  [2]
  배너를 모자이크로 슬라이드한다!  [271]╋
  팝업창 바로 띄우기  [767]╋
  아이프레임 자동으로 늘어나는 자바 스크립트  [1]

    폰트 관련 
  무료 폰트 다운로드 / 링크 사이트. 
  조선일보 명조체 
  [무료다운로드] 웹폰트(트루타입) 23종 공개합니다. 
  이른바 "웹 폰트"를 쓰지 말아야 하는 이유 
  폰트는 FontStruct에서 만들었어요! 
  웹폰트 변환 방법 
  네이버 나눔 폰트 
    제로보드 4 
  스팸 방지 - 스팸프리 
  제로보드 4에서 한글 첨부파일 다운로드시 다운로드 안되는 현상 해결방안 
  php 4.3.x 버젼 대에서 ''정상적으로 글을 작성하여 주시기 바랍니다."  [4]
  악성스크립트, 해킹등으로 괴로움을 겪는 제로보드4 이용자님들께 [펌글] 
  config.php 파일명 변경 관련 - 보안 사항 
  특정게시판, 특정요일에 7일전 게시물 전부 삭제하기 
  일정 기간이 지난 후 게시물과 파일 자동 삭제 

    제로보드 4 FAQ 
  제로보드 4 관련 정보 
  제 홈페이지에 외부 로그인을 달고 싶습니다..  [5]
  제로보드 pl2로 업그레이드를 하려면 어떻게 하나요?  [1]
  어째서 관리자의 정보는 없나요? 자기소개에 글도 안써지고;;  [1]
  나의 계정 사용 용량을 알 수 있습니까?  [1]
  내 홈의 절대 경로 확인하는 법 
  노프레임이란?  [684]

    제로보드 4 질문 
  제로보드에 사랑비넣기  [1]
  전체쪽지 보내기 소스 좀 알려주세요ㅠㅠ  [1]
  팝업창에 대하여  [1]
  1:1게시판(상담게시판)에 관련해 문의합니다.  [1]
  질문 있습니다. 
   파일을 올립니다.  [1]
  안녕하셨어요... 질문이 또 있어서요.  [1]

    개인 서버 만들기 
  개인용 NAS 서버 구축 01, 안 쓰는 넷북으로 자작 NAS 구축하기 
  Link Shell Extension / 윈도우즈에서 심볼릭 링크 
  홈페이지 속도 떨어뜨리는 접속 통계 사이트 
  445포트(smb) 죽이고 살리기 
  445 포트 제거하기 
   port 139, 445번 이해,차단- 라우팅 및 원격 액세스 서비스 (RAS ser... 
  HP ProLiant MicroServer 사양  [1]

제 홈페이지(조은호 홈페이지)에 오신 것을 환영합니다. 이 홈페이지는 제 개인 홈페이지로 제가 직접 관리하고 있습니다.
제 홈페이지는 비영리 홈페이지이며 자료 제공만을 목적으로만 만들어진 것이 아니라, 제 개인적인 자료 정리와 관리의 목적으로
만들어졌으므로 각 메뉴마다 충분한 자료가 없을 수도 있습니다. 인터넷을 통해 수집된 것이 많으므로 그 출처를 밝혀 놓았습니다.
혹시 저작권이나 초상권에 문제가 있는 자료의 경우 연락 주시면 삭제해 드리도록 하겠습니다.
본 홈페이지에 적용된 글꼴은 윈도우즈의 '굴림'체, '우리글닷컴'의 '우리새봄', '우리돋움90c1' 체, '(주)예쁜글씨'의 '좋은_여행가는날-웹'이며 유료로 등록 사용중입니다.

본 홈페이지에 포함되거나 게시된 이메일(email)주소가 이메일 수집 프로그램이나 그 밖의 기술적 장치를 이용하여 무단으로 수집되는 것을 거부하며,
이를 위반할 경우 정보통신망 이용촉진 및 정보보호 등에 관한 법률 등 관계 법령에 의해 형사 처벌됨을 유의하기기 바랍니다.

Copyright 2002 All right reserved          This Homepage was Designed & Programmed By Cho Eunho