11 Articles, Search for '강좌&TIP/PHP'
- 2011/12/19 MySQL 외부 접속시 Delay 현상
- 2010/10/10 Tokyo Cabinet + Tokyo Tyrant + PECL Tokyo Tyrant 설치하기 (5)
- 2010/10/10 대용량 웹 서비스를 위한 구조 설계.....
- 2010/10/10 DB POOL SQL Relay 설치 하기 (2)
- 2008/03/27 NMail 사용자 필터를 적용해 보자.
- 2005/11/04 [TIP] 파일 용량 단위 변환 함수 (1)
- 2005/05/24 [TIP] 파일명 확장자 구하는 함수 (1)
- 2005/05/24 [TIP] 파일명에 특수문자가 있는지 체크하는 함수
- 2005/05/18 [PHP초급강좌02] Hello World (4)
- 2005/05/18 [PHP초급강좌01] PHP를 배우기 위한 가~~~~장 기본적인 준비물! (1)
# mkdir /home/server/tc-data
<?
phpinfo();
?>
#############################################################################################

Leave your greetings.
-
네이버갓워즈(으니)아...다 영어에요...어려워요 ㅠㅠ
2011/01/25 05:28 [ Permalink : Modify/Delete : Reply ]
금룡님~ 네이트 저번 주말같은 문제 생겨서 네이트 유저들네이버에 와서 금룡님 찾아요 ㅋ -
도크-
금룡이
-
-
푸근이-
비밀방문자
-

Leave your greetings.
1. rudiments 설치 ( rudiments-0.32.tar.gz )
rudiments 는 SQL Relay를 사용하기 위한 C 라이브러리 파일
# cd /usr/local/src
# wget http://downloads.sourceforge.net/projec ··· rks-kr-2
# tar zxvf rudiments-0.32.tar.gz
# cd rudiments-0.32
# ./configure
# make
# make install
설치를 완료하면 /usr/local/firstworks 에 관련파일이 설치된다.
2. SQL Relay 설치 ( sqlrelay-0.39.4.tar.gz )
SQL Relay를 Dadabase Pool 로서 Database Connection을 효율적으로 관리 할 수 있게 해줍니다.
여담이지만 최신 sqlrelay 0.41 설치하였는데 listener가 정상적으로 동작하지 않는 문제가 있었습니다.
구글링을 해보니 같은 문제를 가진 사람들이 여렀있었는데 0.39.4 버전에서는 그런 문제가 없다고 해서 설치해보니 정상 동작 하네요.
# cd /usr/local/src
# wget http://downloads.sourceforge.net/projec ··· rks-kr-2
# tar zxvf sqlrelay-0.39.4.tar.gz
# cd sqlrelay-0.39.4
# ./configure --enable-small-code --enable-mysql-rpath --enable-php-rpath --with-php-ext-dir=[PHP 확장 모듈 DIR]
SQL Relay를 설치하면 php module 인 sql_relay.so 파일이 생성됩니다. 저같은 경우는 /usr/local/php/extensions 에 설치하였습니다.
# make
# make install
완료후 /usr/loca/firstworks 에 설치 됩니다.
# cd /usr/local/firstworks/etc
SQL Relay 접속 환경 설정을 위해 다음과 같이 설정 파일을 만듭니다.
# vi sqlrelay.conf
<!DOCTYPE instances SYSTEM "sqlrelay.dtd">
<instances>
<!-- Regular SQL Relay Instance -->
<instance id="[SQL Relay 고유 ID]" port="9000"
dbase="[접속 DB : mysql]" connections="[최초 커넥션 수 : 3]" maxconnections="[최대 커넥션 수 : 15]" maxqueuelength="0"
growby="1" ttl="60" endofsession="commit" sessiontimeout="600"
runasuser="root" runasgroup="root" cursors="5" authtier="listener"
handoff="pass" deniedips="" allowedips="" debug="none"
maxquerysize="65536" maxstringbindvaluelength="4000"
maxlobbindvaluelength="71680" idleclienttimeout="-1" maxlisteners="-1"
listenertimeout="0" reloginatstart="false">
<users>
<user user="[SQL Relay 접속 ID]" password="[SQL Relay 접속 Password]"/>
</users>
<connections>
<connection connectionid="[SQL Relay가 접속할 DB 고유 ID]"
string="host=[DB HOST];user=[DB ID];password=[DB Password];db=[DB];"
metric="1" behindloadbalancer="no"/>
</connections>
</instance>
</instances>
#############################################################################################
:wq
# vi ~/.bash_profile
.bash_profile 에서 다음 부분을 추가합니다.
# source ~/.bash_profile
수정한 .bash_profile을 적용합니다.
이제 SQL Relay를 실행해서 정상적으로 동작하는지 확인합니다.
# sqlr-start -id [SQL Relay 고유 ID]
#############################################################################################
sqlr-start -id [SQL Relay 고유 ID]
Starting listener:
sqlr-listener -id [SQL Relay 고유 ID] -config /usr/local/firstworks/etc/sqlrelay.conf
Starting 10 connections to godwars.relay :
sqlr-connection-mysql -id [SQL Relay 고유 ID] -connectionid [SQL Relay가 접속할 DB 고유 ID] -config /usr/local/firstworks/etc/sqlrelay.conf
sqlr-connection-mysql -id [SQL Relay 고유 ID] -connectionid [SQL Relay가 접속할 DB 고유 ID] -config /usr/local/firstworks/etc/sqlrelay.conf
sqlr-connection-mysql -id [SQL Relay 고유 ID] -connectionid [SQL Relay가 접속할 DB 고유 ID] -config /usr/local/firstworks/etc/sqlrelay.conf
Starting scaler:
sqlr-scaler -id [SQL Relay 고유 ID] -config /usr/local/firstworks/etc/sqlrelay.conf
Starting cache manager:
sqlr-cachemanager
Warning: using default id.
Thanks to MP3.com for sponsoring:
Clustered/Replicated database support.
Perl API.
Thanks to FeedLounge for sponsoring:
Query routing and filtering.
#############################################################################################
# netstat -anp | grep LISTEN
tcp 0 0 0.0.0.0:9000 0.0.0.0:* LISTEN 25512/sqlr-listener
#############################################################################################
포트가 정상적으로 열려있는지도 확인합니다.
이제 Apache 를 재시작 해줍니다.
# service httpd restart
<?
phpinfo();
?>
#############################################################################################
PHP INFO 에서 'Additional Modules'에 'sql_relay'이 추가 되어 있는지 확인합니다.
#############################################################################################
<?php
//dl("sql_relay.so");
$con = sqlrcon_alloc("localhost", 9000, "", "[SQL Relay 접속 ID]", "[SQL Relay 접속 Password]", 0, 1);
$cur = sqlrcur_alloc($con);
if(!sqlrcur_sendQuery($cur, "select * from [DB Table]")) {
echo sqlrcur_errorMessage($cur);
echo "\n";
}
sqlrcon_endSession($con);
for($row=0; $row<sqlrcur_rowCount($cur); $row++) {
for($col=0; $col<sqlrcur_colCount($cur); $col++) {
echo sqlrcur_getField($cur,$row,$col);
echo ",";
}
echo "\n";
}
sqlrcur_free($cur);
sqlrcon_free($con);
?>
#############################################################################################
웹에서도 정상적으로 결과가 나온다면 SQL Relay가 정상적으로 설치 및 작동되는것입니다.
Leave your greetings.
-
저도 죽는 현상이 일어 납니다. 셋팅 문제인거 같은데, 어디가 문제 인지 모르겠네요.
2010/11/15 21:36 [ Permalink : Modify/Delete : Reply ] -
sqlrelay.conf 파일에서 instance 설정시 addresses="0.0.0.0" 으로 설정 추가해보시길 바랍니다.
2010/11/15 21:42 [ Permalink : Modify/Delete : Reply ]
전 이렇게 해결했습니다.
현재 NMail 을 정품을 구매해 사용중입니다.
얼마전에 NMail 사이트의 Q&A 에 '스팸 편지'가 아웃룩으로 받아지는것을 막을 방법이 없는지 문으했었습니다.
대답은 메일코어쪽 까지 수정해야되서 처리 할수가 없다는 답변이었습니다.
그래서 고민 끝에 메일을 받을때 개인 필터를 적용하는 방법을 생각해 봤습니다.
처음에는 클론으로 1분마다 스팸 포인트가 1.5 이상인 것을 자동 삭제 또는 지운 편지함으로 이동시키게 만들었는데 서버 부하도 크고 1분 사이에 메일을 긁어갈 경우가 있어서 좋은 방법이 아니더군요 .(정말 무식한 방법 ㅠ.ㅠ)
그 다음 생각한게 서버에서 모니터링을 하다보니 filter.sh.php 가 메일이 받아지면 실행 된다는 것을 알게되었습니다. 필터를 쓰도록 옵션을 설정한 사람만 해당 필터가 작동하는 듯 하더군요 .
그래서 수정을 해봤습니다. 적용후 궁금한 사항은 리플로 남겨주세요.
2. /NMail 설치된 폴더/nmail/filter.sh.php를 vi 나 다른 에디터를 통해 수정모드로 갑니다.
3. line 12 or 13 줄에 있는 $exitcode = mail_filter(true, $G_SYS[VIRUS_SCAN]); 와 다음 줄의 exit($exitcode); 를 확인합니다.
( * 확인해보니 $exitcode = mail_filter(true, $G_SYS[VIRUS_SCAN]); 이 함수가 동작후 메일이 DB에 등록되고 각 개인별 폴더로 이동 됩니다. )
4. exit($exitcode); 바로 윗줄에 다음과 같은 소스를 추가합니다.
// 스팸 편지 이동 필터 by Choi hyun pil - 2008.03.26 - 시작
// 아래 설정은 '스팸메일 설정' -> '상세설정' 에있는 "안티스팸메일에서 제목에 [FAKE]가 붙는 위조메일은 바로 삭제.(권장)" 라는 항목을
// "[FAKE]가 붙는 위조메일은 바로 삭제 및 [스팸편지함]에서 스팸포인트(SP)가 1.4 이상일때 [지운편지함]으로 이동." 으로 내용을 변경후 사용.
// 여기서 1.4 포인트는 수정 가능합니다.
// 해당 파일은 /Nmail설치폴더/nmail/skin/webmail/사용중인스킨명/spam_config.html 임
// 이를 적용시 서버에 부하가 증가할 수 있습니다. 이로 인해 발생하는 문제에 대해서 책임지지 않습니다.
// * 500명까지 테스트 완료
$move_spam_point = "1"; // 이동의 기준이될 스팸 포인트를 입력하세요. 해당 포인트 초과시 지운편지함으로 이동. Default : 1.4
$tmp = explode('@', trim($_SERVER['argv'][3])); // 받는사람 메일주소를 획득
$user_id = $tmp[0]; // 받는사람 ID 추출
$user_domain = $tmp[1]; // 받는사람 Domain 추출
$tmp = explode("/", $_SERVER[argv][1]); // spool에 있는 메일의 파일이름경로를 획득
$mf_filename = basename($_SERVER['argv'][1]); // 메일 파일명 추출
$sql = "select
A.m_no, A.m_id , A.m_mail_file_group , A.d_no
from
nmail_member A,
nmail_spam_config B,
nmail_domain C
where
C.d_name = '".$user_domain."' and
A.m_no = B.m_no and
B.sc_fake_del = 'Y' and
A.d_no = C.d_no and
A.m_id = '".$user_id."'";
$result = mysql_query($sql);
$user_rows = mysql_fetch_array($result);
// 해당 메일정보(메일 ID 및 스팸 포인트)를 읽어옴
$sql = "select mf_no, mf_filename, mf_spam_point from nmail_mail_file_".$user_rows[d_no]."_".$user_rows[m_mail_file_group]." where m_no = '".$user_rows[m_no]."' and mf_filename = '".$mf_filename."' limit 0, 1";
$result = mysql_query($sql);
$mail_rows = mysql_fetch_array($result);
if ( $mail_rows[mf_spam_point] >= $move_spam_point ) { // 스팸 포인트가 높은지 확인
$user_tmp_dir = get_mail_dir( $user_rows[m_mail_file_group], $user_id, $user_domain).'/tmp/'.$mf_filename;
errorlog($user_tmp_dir, 'DEBUG'); // 사용자 폴더를 제대로 알아냈는지 weblogs/debug 에 기록을 남김.
rename($_SERVER['argv'][1], $user_tmp_dir); // rename 시 에러가 생긴다면 copy 해도 무관함. 반송메일은 자동삭제되기 때문.
$exitcode = 4;
$sql = "UPDATE nmail_mail_file_".$user_rows[d_no]."_".$user_rows[m_mail_file_group] . " SET mb_id = 'trash' WHERE m_no='". $user_rows[m_no] . "' AND mb_id='spam' AND mf_no = '".$mail_rows[mf_no]."'";
db_query($sql);
};
};
//스팸 편지 이동 필터 by Choi hyun pil - 2008.03.26 - 끝
현재 적용후 사용중인데 아주 만족 스럽습니다. ^^
만약 $move_spam_point 를 1로 설정하시면 [SPAM]으로 붙어서 스팸편지함으로 가는 메일은 모두 지운편지함으로 이동합니다. 즉 아웃룩에서 하나도 안받아지게 되죠 ^^
Leave your greetings.
각파일에 대한 사이즈를 많이 체크합니다.
이때 필수적으로 파일사이즈를 표시합니다.
저같은 경우 예전에 아래와 같은 함수를 제작해서 사용했습니다.
하지만....... 역시 사람은 머리가 좋아야 되나 봅니다..
프로그래머는 특히 수학을 잘해야되네요 ㅠ.ㅠ
아래 두소스를 참고해보세요
$filesize = filesize($path);
$unit = "bytes";
if ($filesize > 1024) {
$filesize = ($filesize / 1024);
$unit = "kB"; }
if ($filesize > 1024) {
$filesize = ($filesize / 1024);
$unit = "MB"; }
if ($filesize > 1024) {
$filesize = ($filesize / 1024);
$unit = "GB"; }
if ($filesize > 1024) {
$filesize = ($filesize / 1024);
$unit = "TB"; }
$filesize = round($filesize,0);
return $filesize." ".$unit;
};
function Change_Size_Unit($File)
{
//파일명에서 파일 사이즈를 바이트 단위로 추출
$Size = filesize($File);
$FileSizeUnit = array("Bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB");
return round($Size/pow(1024, ($i = floor(log($Size, 1024)))), 2) . $FileSizeUnit[$i];
};
Leave your greetings.
-
여기다 쓰시면 어떡해용~~~ KDIV게시물에 쓰셔야죵 ^^;;;
2005/12/23 00:32 [ Permalink : Modify/Delete : Reply ]
파일명을 출력하고싶은곳에 $This_File_Name[$This_Print_Image_Num] 이변수를 넣으시면됩니다.
너무 간단한걸 함수로 만드는게 아니냐고 하지만...
만들어 놓으면 편하다 ㅡㅡ;;;
파일 확장자 구하는 방법은 여러가지가 있다.
explode 와 array_pop 를 사용하는경우
pathinfo 또는 strrpos 등 이다..
하지만 여기서는 개인적으로 더 간단하다고 생각되는
preg_match 를 사용해서 함수를 만들었다.
# 파일명 확장자를 구하는 함수
# Programmer : 최현필(KumRyung) - 2005.05.24
#############################################################
function GetExtName($FileName)
{
// $FileName 의 가장 마지막 . 이후의 부분을 구해온다.
preg_match("/\.[a-zA-Z0-9_]+$/",$FileName,$Result);
// 위의 결과값에서는 . 이 포함되기 때문에 .을 빼준다
return str_replace(".","",$Result[0]);
};
Leave your greetings.
-
jeonga// explode 경우 a.b.c.gif 같은경우를 대비해 항상 count 를 해서 해당 카운터에서 -1한다음 가져와야되지... 그런걸 계산안하는 부분도 있고, 확장자에 특문이 들어가있는경우까지 체크가능하기때문에.. 이렇게 만들었지. ^^;;
2005/06/03 15:50 [ Permalink : Modify/Delete : Reply ]
아래의 함수는 오직 숫자와 영문으로만 이루어진 파일에한해
true를 리턴한다.
# 파일명 비교 함수(특수문자 및 한글 포함시 False 리턴)
# Programmer : 최현필(KumRyung) - 2005.05.24
#############################################################
function ChkFileName($FileName)
{
// 혹시나 있을 시작과 끝의 공백 제거...
$filename = trim($FileName);
// 숫자와 영문 그리고 . 이외의 문자가 있는지 체크
preg_match('/[0-9a-zA-Z.]+/', $FileName, $Result);
// 참고 : ( ,) , [ , ] 를 파일명에 포함하고 싶을 경우
// '/[0-9a-zA-Z.\(\)\[\]]+/' 이 정규식을 사용하세요!
// 체크한 결과값이 업로드한 파일명과 같은지 체크
if( $Result[0] == $FileName )
return "true"; // 같다면 True
else
return "false"; // 다르다면 False
};
Leave your greetings.
(솔직히 C 나 자바처럼 PHP는 Hello World 가 중요하지는 않다...ㅡㅡa)
우리가 웹페이지에서 PHP를 사용하기 위해서는 '내가 지금부터 PHP를 쓸꺼야~~'
라는 표시를 해줘야 한다... 물론 다쓰면 '나 다썻어~'라고도 표시해야 된다.
그 역할을 하는게 와 ?> 로, 각각 PHP의 시작과 끝을 나타낸다.
이제 간단하게 Hello World 를 출력해보자.
(*위의 01: ,02: ,03: 은 줄수를 나타내는것 뿐이다. ㅡㅡ;)
01번째 줄과 03번째 줄은 PHP 스크립트의 시작과 끝을 알려준다.
(*이 라인은 처음이자 마지막 설명이다. 다음부터는 이런 설명 생략!!!)
이제 02번째 라인을 보자.. 딱 echo 가 눈에 보일것이다.
echo 는 간단하게 "" 안에 있는 내용을 웹페이지에 출력해주는 역활이다.
(*C에서의 printf() 와 같은 역활 -0-;)
여기서 중요한것이 반드시 마지막에 ;를 해줘야 된다.
; 는 한명령의 끝을 나타내는 것으로 안하면... 당연히 에러난다..
PHP를 프로그래밍 하다보면 저 썩을(--;) ';'때문에 오류가 나는경우가 간간히 있다...
(아니 자주있다. ....Orz...)
어때 간단하지???
PS> echo에 대해 자세히 알고싶을 경우 echo <= 를 클릭!
Leave your greetings.
-
-
-
윈도우 API책 보면서 "HELLO WORLD" 못본거 없음...심지어 학원 강의 자료에도.....
2005/09/10 12:21 [ Permalink : Modify/Delete : Reply ] -
ewga
'난 HTML이 먼지 모르는데요?'라고 하는 사람이 있다면.... Alt + F4 를 해서 이창을 닫고 HTML부터 공부하고 오기를 바란다.
자 이제 본격적인 강좌를 해보기 전에~~~
뭐 이리 서론이 기냐구?? 일단 기본적인건 알아야되지 않겠어?
Client Side Script 와 Server Side Script 이 두가지다.
간단히 말해서 Client Side Script는 우리 컴퓨터에서 직접 실행되는 언어이고,
Server Side Script는 서버에서만 실행이 되는 언어이다.
예로 HTML 이나 JavaScript는 Client Side Script이며,
우리가 지금부터 공부할 PHP나 ASP, JSP 등은 Server Side Script 이다.
즉, PHP를 실행하기 위해서는 서버가 반드시 필요하다.
만약 개인서버나 혹은 계정이 없는 사람은 자기 컴퓨터를 서버로 만들어서 사용할수가 있다.
서버를 설치하는 방법은 http://www.apmsetup.com/?ct=17 이곳을 참고하면 쉽게 PHP 서버를 만들수 있다.
이제 PHP가 어떤언어 인지도 알았고.. PHP를 연습해볼 서버도 준비가 됬다.
그럼 다음 강좌부터 본격적으로 PHP를 배워보자~~
*PHP를 공부하는데 알아두면 좋은 사이트!
1. http://www.phpschool.com : PHPer라면 매일 들리는 사이트
2. http://www.php.net/manual/kr/index.php : PHP 함수 메뉴얼
Leave your greetings.
-
궁그니르




Leave your greetings.