그누보드 튜닝 (common.php 에서) 약간의 Tips
아빠불당님께서 common.php을 튜닝한 것과는 조금 다른 내용입니다. php에 대해서는 많이 모르기 때문에 조언주시면 감사하게 받겠습니다. ^^
출처 : http://stnzone.com/gboard/blog/?id=359
그누보드에 있는 common.php 는 사이트에 접속할 때, 글을 읽을 때마다 호출되는 코드로 최대한 최적화시켜 주는 것이 좋다.
기존코드
if (file_exists("$g4[path]/$dbconfig_file"))
{
if (is_dir("$g4[path]/install")) die("<meta http-equiv='content-type' content='text/html; charset=$g4[charset]'><script language='JavaScript'> alert('install 디렉토리를 삭제하여야 정상 실행됩니다.'); </script>");
include_once("$g4[path]/$dbconfig_file");
$connect_db = sql_connect($mysql_host, $mysql_user, $mysql_password);
$select_db = sql_select_db($mysql_db, $connect_db);
if (!$select_db)
die("<meta http-equiv='content-type' content='text/html; charset=$g4[charset]'><script language='JavaScript'> alert('DB 접속 오류'); </script>");
}
else
{
echo "<meta http-equiv='content-type' content='text/html; charset=$g4[charset]'>";
echo <<<HEREDOC
<script language="JavaScript">
alert("DB 설정 파일이 존재하지 않습니다.\\n\\n프로그램 설치 후 실행하시기 바랍니다.");
location.href = "./install/";
</script>
HEREDOC;
exit;
}
if (file_exists("$g4[path]/$dbconfig_file"))
{
if (is_dir("$g4[path]/install")) die("<meta http-equiv='content-type' content='text/html; charset=$g4[charset]'><script language='JavaScript'> alert('install 디렉토리를 삭제하여야 정상 실행됩니다.'); </script>");
include_once("$g4[path]/$dbconfig_file");
$connect_db = sql_connect($mysql_host, $mysql_user, $mysql_password);
$select_db = sql_select_db($mysql_db, $connect_db);
if (!$select_db)
die("<meta http-equiv='content-type' content='text/html; charset=$g4[charset]'><script language='JavaScript'> alert('DB 접속 오류'); </script>");
}
else
{
echo "<meta http-equiv='content-type' content='text/html; charset=$g4[charset]'>";
echo <<<HEREDOC
<script language="JavaScript">
alert("DB 설정 파일이 존재하지 않습니다.\\n\\n프로그램 설치 후 실행하시기 바랍니다.");
location.href = "./install/";
</script>
HEREDOC;
exit;
}
기존 코드를 다음과 같이 변경한다.
// neojzs : 최적화
include_once("$g4[path]/$dbconfig_file");
$connect_db = sql_connect($mysql_host, $mysql_user, $mysql_password);
$select_db = sql_select_db($mysql_db, $connect_db);
if (!$select_db)
die("<meta http-equiv='content-type' content='text/html; charset=$g4[charset]'><script language='JavaScript'> alert('DB 접속 오류'); </script>");
include_once("$g4[path]/$dbconfig_file");
$connect_db = sql_connect($mysql_host, $mysql_user, $mysql_password);
$select_db = sql_select_db($mysql_db, $connect_db);
if (!$select_db)
die("<meta http-equiv='content-type' content='text/html; charset=$g4[charset]'><script language='JavaScript'> alert('DB 접속 오류'); </script>");
즉, 매번 db컨피그화일이 있는지 검사하지 않게 한다. 왜냐하면 그누보드가 인스톨되어 있다면 당연히 있는 것이므로..
또한, 접근가능 IP와 접근차단 IP는 다음과 같이 처리해 주는 것이 좋다.
기존코드
// 접근가능 IP
$cf_possible_ip = trim($config['cf_possible_ip']);
if ($cf_possible_ip) {
$is_possible_ip = false;
$pattern = explode("\n", $cf_possible_ip);
for ($i=0; $i<count($pattern); $i++) {
$pattern[$i] = trim($pattern[$i]);
if (empty($pattern[$i]))
continue;
//$pat = "/({$pattern[$i]})/";
$pattern[$i] = str_replace(".", "\.", $pattern[$i]);
$pat = "/^{$pattern[$i]}/";
$is_possible_ip = preg_match($pat, $_SERVER['REMOTE_ADDR']);
if ($is_possible_ip)
break;
}
if (!$is_possible_ip)
die ("접근이 가능하지 않습니다.");
}
// 접근가능 IP
$cf_possible_ip = trim($config['cf_possible_ip']);
if ($cf_possible_ip) {
$is_possible_ip = false;
$pattern = explode("\n", $cf_possible_ip);
for ($i=0; $i<count($pattern); $i++) {
$pattern[$i] = trim($pattern[$i]);
if (empty($pattern[$i]))
continue;
//$pat = "/({$pattern[$i]})/";
$pattern[$i] = str_replace(".", "\.", $pattern[$i]);
$pat = "/^{$pattern[$i]}/";
$is_possible_ip = preg_match($pat, $_SERVER['REMOTE_ADDR']);
if ($is_possible_ip)
break;
}
if (!$is_possible_ip)
die ("접근이 가능하지 않습니다.");
}
// neojzs 최적화
$is_possible_ip = true;
if($config['cf_possible_ip'])
{
$cf_possible_ip = trim($config['cf_possible_ip']);
if ($cf_possible_ip) {
$is_possible_ip = false;
$pattern = explode("\n", $cf_possible_ip);
for ($i=0; $i<count($pattern); $i++) {
$pattern[$i] = trim($pattern[$i]);
if (empty($pattern[$i]))
continue;
//$pat = "/({$pattern[$i]})/";
$pattern[$i] = str_replace(".", "\.", $pattern[$i]);
$pat = "/^{$pattern[$i]}/";
$is_possible_ip = preg_match($pat, $_SERVER['REMOTE_ADDR']);
if ($is_possible_ip)
break;
}
if (!$is_possible_ip)
die ("접근이 가능하지 않습니다.");
}
}
$is_possible_ip = true;
if($config['cf_possible_ip'])
{
$cf_possible_ip = trim($config['cf_possible_ip']);
if ($cf_possible_ip) {
$is_possible_ip = false;
$pattern = explode("\n", $cf_possible_ip);
for ($i=0; $i<count($pattern); $i++) {
$pattern[$i] = trim($pattern[$i]);
if (empty($pattern[$i]))
continue;
//$pat = "/({$pattern[$i]})/";
$pattern[$i] = str_replace(".", "\.", $pattern[$i]);
$pat = "/^{$pattern[$i]}/";
$is_possible_ip = preg_match($pat, $_SERVER['REMOTE_ADDR']);
if ($is_possible_ip)
break;
}
if (!$is_possible_ip)
die ("접근이 가능하지 않습니다.");
}
}
기존코드
// 접근차단 IP
$is_intercept_ip = false;
$pattern = explode("\n", trim($config['cf_intercept_ip']));
for ($i=0; $i<count($pattern); $i++) {
$pattern[$i] = trim($pattern[$i]);
if (empty($pattern[$i]))
continue;
$pattern[$i] = str_replace(".", "\.", $pattern[$i]);
$pat = "/^{$pattern[$i]}/";
$is_intercept_ip = preg_match($pat, $_SERVER['REMOTE_ADDR']);
if ($is_intercept_ip)
// 접근차단 IP
$is_intercept_ip = false;
$pattern = explode("\n", trim($config['cf_intercept_ip']));
for ($i=0; $i<count($pattern); $i++) {
$pattern[$i] = trim($pattern[$i]);
if (empty($pattern[$i]))
continue;
$pattern[$i] = str_replace(".", "\.", $pattern[$i]);
$pat = "/^{$pattern[$i]}/";
$is_intercept_ip = preg_match($pat, $_SERVER['REMOTE_ADDR']);
if ($is_intercept_ip)
// 접근차단 IP
$is_intercept_ip = false;
// neojzs 최적화
if($config['cf_intercept_ip'])
{
$pattern = explode("\n", trim($config['cf_intercept_ip']));
for ($i=0; $i<count($pattern); $i++) {
$pattern[$i] = trim($pattern[$i]);
if (empty($pattern[$i]))
continue;
$pattern[$i] = str_replace(".", "\.", $pattern[$i]);
$pat = "/^{$pattern[$i]}/";
$is_intercept_ip = preg_match($pat, $_SERVER['REMOTE_ADDR']);
if ($is_intercept_ip)
die ("접근 불가합니다.");
}
}
$is_intercept_ip = false;
// neojzs 최적화
if($config['cf_intercept_ip'])
{
$pattern = explode("\n", trim($config['cf_intercept_ip']));
for ($i=0; $i<count($pattern); $i++) {
$pattern[$i] = trim($pattern[$i]);
if (empty($pattern[$i]))
continue;
$pattern[$i] = str_replace(".", "\.", $pattern[$i]);
$pat = "/^{$pattern[$i]}/";
$is_intercept_ip = preg_match($pat, $_SERVER['REMOTE_ADDR']);
if ($is_intercept_ip)
die ("접근 불가합니다.");
}
}
즉, 데이타가 있을 때만 검사하는 형태로 처리하는 것이다.
또한, common.php 파일을 수정할 필요가 없도록 확장하는 코드는 차라리 필요할 때마다 수정하는 것이 부하에 훨씬 좋다.
기존코드
// common.php 파일을 수정할 필요가 없도록 확장합니다.
$tmp = dir("$g4[path]/extend");
while ($entry = $tmp->read()) {
// php 파일만 include 함
if (preg_match("/(\.php)$/i", $entry))
include_once("$g4[path]/extend/$entry");
}
// common.php 파일을 수정할 필요가 없도록 확장합니다.
$tmp = dir("$g4[path]/extend");
while ($entry = $tmp->read()) {
// php 파일만 include 함
if (preg_match("/(\.php)$/i", $entry))
include_once("$g4[path]/extend/$entry");
}
// common.php 파일을 수정할 필요가 없도록 확장합니다.
// neojzs 최적화
/*
$tmp = dir("$g4[path]/extend");
while ($entry = $tmp->read()) {
// php 파일만 include 함
if (preg_match("/(\.php)$/i", $entry))
include_once("$g4[path]/extend/$entry");
}
*/
// 필요한 것만 include시켜준다
include_once("$g4[path]/extend/index.php");
include_once("$g4[path]/extend/gblog.extend.php");
include_once("$g4[path]/extend/gnutalk.extend.php");
// neojzs 최적화
/*
$tmp = dir("$g4[path]/extend");
while ($entry = $tmp->read()) {
// php 파일만 include 함
if (preg_match("/(\.php)$/i", $entry))
include_once("$g4[path]/extend/$entry");
}
*/
// 필요한 것만 include시켜준다
include_once("$g4[path]/extend/index.php");
include_once("$g4[path]/extend/gblog.extend.php");
include_once("$g4[path]/extend/gnutalk.extend.php");
댓글 13개
17년 전
감사합니다. 미처 생각하지 못했던 부분을 최적화 시켜주셨네요.
17년 전
^^ 아빠불당님의 최적화팁에 많은 도움을 받고 있습니다. 저역시 감사드립니다.
17년 전
login, visit 테이블도 사용하지 않으면 매우 빨라집니다.
매번 쿼리를 날리니... ㅎㅎ
매번 쿼리를 날리니... ㅎㅎ
17년 전
접근차단아이피에 관한 팁은 적용을 하니 홈페이지가 안뜨게 되요; 제가 뭘 잘못적용한걸까요;
17년 전
전 아예 그 기능을 주석처리 해버렸습니다. ㅋㅋ
17년 전
수정하는 코드에서 괄호를 잘 보세요.
17년 전
extend 디렉토리의 index.php는 include하지 않아도 됩니다. 빈 파일 입니다.
include_once("$g4[path]/extend/index.php");
include_once("$g4[path]/extend/index.php");
17년 전
아.. 그렇군요. ^^
swinter
17년 전
좋은 팁...감사합니다...
17년 전
넵 ^^
PhotoFly
17년 전
좋은 팁 감사합니다..^^
다만, 그누보드 업그레이드시에는 작업량이 좀 더 늘겠군요...
다만, 그누보드 업그레이드시에는 작업량이 좀 더 늘겠군요...
17년 전
g5쯤에서는 게시판을 테이블 하나로 통합했으면 합니다.
그러면 더 다양한 기능을 손 쉽게 구현할 수 있을 겁니다.
그러면 더 다양한 기능을 손 쉽게 구현할 수 있을 겁니다.
akshon
17년 전
정말 감사합니다.
게시판 목록
그누4 팁자료실
그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.
나누면 즐거움이 커집니다.
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 3309 | 3년 전 | 1809 | ||
| 3308 | 11년 전 | 2096 | ||
| 3307 |
uPAmJ903
|
6년 전 | 4757 | |
| 3306 |
바른사나이
|
6년 전 | 3276 | |
| 3305 | 6년 전 | 12313 | ||
| 3304 | 7년 전 | 3707 | ||
| 3303 | 7년 전 | 3746 | ||
| 3302 |
지리산초보
|
7년 전 | 13599 | |
| 3301 |
sozet
|
8년 전 | 4906 | |
| 3300 |
sozet
|
8년 전 | 5975 | |
| 3299 |
sozet
|
8년 전 | 10864 | |
| 3298 | 8년 전 | 4019 | ||
| 3297 |
또치하우스
|
8년 전 | 4448 | |
| 3296 | 8년 전 | 11977 | ||
| 3295 |
또치하우스
|
8년 전 | 14989 | |
| 3294 | 8년 전 | 6031 | ||
| 3293 | 8년 전 | 5595 | ||
| 3292 |
|
9년 전 | 5324 | |
| 3291 | 9년 전 | 13684 | ||
| 3290 | 9년 전 | 5057 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기