출석부 모듈 속도 개선 팁 (조금만)
@@ 출석부 모듈 7.0.3버전 기준입니다.
출석부가 근본적으로 느릴 수밖에 없는 것은 알지만
그래도 조금이나마 개선되는 팁입니다.
개인적인 의견이며 근본적인 해결책은 아닙니다.
누적된 출석량이 아주 많아 느리신 분이 한 번쯤 시도해볼 만합니다.
제일 많이 사용되는 부분의 속도 개선입니다.
0. 첫 화면에서의 속도 저하 부분
출석부 표시 때 30일만큼 출석 확인 쿼리가 실행 됨.
목록의 멤버의 총 출석일 수를 매번 쿼리를 실행 함.
1. 오늘 이후의 날짜는 출석확인 안 하게 처리
(오늘이 30일이면 그대로지만 1일이면 쿼리가 30번 -> 1번으로 줄어듭니다.)
출석부 기본 스킨
modules/attendance/skins/default/list.html 16번 줄
{@$checked = $oAttendanceModel->getIsCheckedA($logged_info->member_srl, $check_date)}
아래로 교체
<!--@if($check_date <= date('Ymd'))-->
{@$checked = $oAttendanceModel->getIsCheckedA($logged_info->member_srl, $check_date)}
<!--@else-->
{@$checked = 0}
<!--@end-->
{@$checked = $oAttendanceModel->getIsCheckedA($logged_info->member_srl, $check_date)}
<!--@else-->
{@$checked = 0}
<!--@end-->
모바일 스킨도 같습니다.
2. 인덱스 추가
modules/attendance/attendance.class.php
2-1 function checkUpdate() 함수 안에 추가
146번 줄
//attendance 테이블에 regdate, member_srl 인덱스 추가
if(!$oDB->isIndexExists("attendance","idx_regdate")) return true;
if(!$oDB->isIndexExists("attendance","idx_member_srl")) return true;
if(!$oDB->isIndexExists("attendance","idx_regdate")) return true;
if(!$oDB->isIndexExists("attendance","idx_member_srl")) return true;
2-2 function moduleUpdate() 함수 안에 추가
if(!$oDB->isIndexExists("attendance","idx_regdate"))
{
$oDB->addIndex('attendance', 'idx_regdate', array('regdate'));
$oDB->addIndex('attendance', 'idx_member_srl', array('member_srl'));
}
{
$oDB->addIndex('attendance', 'idx_regdate', array('regdate'));
$oDB->addIndex('attendance', 'idx_member_srl', array('member_srl'));
}
return new Object(0,'success_updated'); 앞
디이깅
Lv. 3
댓글 5
관련 내용을 패치에 반영해주신다니 감사합니다
위 내용 다음으로는 attendance_weekly 테이블 조회 때 느려집니다.
더 좋은 방법으로 패치해주실 거라 믿습니다!