thisgun
a612e69d3e
[perf]for 루프 조건의 count() 호출을 루프 밖으로 추출 (핵심 파일)
...
for ($i=0; $i<count(\$arr); $i++) 패턴은 매 반복마다 count()를 호출하여
불필요한 CPU 오버헤드를 발생시킴. 루프 전에 한 번만 count()를 계산하여
변수에 저장하는 고전적인 최적화.
적용 파일 (19개, 41곳):
- lib/common.lib.php (8)
- common.php (2)
- lib/shop.lib.php (5)
- lib/naverpay.lib.php (1)
- lib/thumbnail.lib.php (2)
- bbs/list.php (1), bbs/search.php (4), bbs/qalist.php (1), bbs/qawrite.php (1)
- bbs/ajax.filter.php (1), bbs/write_update.php (4)
- bbs/write_comment_update.php (1), bbs/memo_form_update.php (2)
- bbs/new_delete.php (1), bbs/move_update.php (4)
- shop/search.php (1), shop/orderform.sub.php (1)
- mobile/shop/search.php (1), mobile/shop/orderform.sub.php (1)
부수 효과:
- lib/shop.lib.php line 2115: 동일 루프 내 strstr($dlcomp, $company)를
strpos($dlcomp, $company) !== false 로 변경 (strstr 최적화의 일부)
제외:
- theme/, skin/, plugin/ (사용자 커스터마이징/서드파티)
- lib/PHPExcel/ (서드파티 라이브러리)
- adm/ 및 shop/mail/ (관리자/드문 경로, 별도 후속 작업 여지)
- 주석 처리된 코드 (bbs/delete.php:127, bbs/delete_all.php:143)
2026-04-16 02:26:59 +00:00
thisgun
47a3790c57
[perf]bbs/list.php N+1 쿼리 2건을 IN 쿼리로 배치 조회로 전환
...
게시판 목록 페이지에서 발생하던 N+1 쿼리 패턴 2건을 제거:
1. 공지 처리 루프 (line 94~120):
기존에는 bo_notice의 각 wr_id마다 sql_fetch를 따로 호출하여 공지가 N개면
N개의 쿼리가 발생. 유효한 wr_id를 정수화하여 수집한 뒤 단일 IN 쿼리로
일괄 조회하고, id 기반 해시맵으로 원래 순서대로 처리.
2. 검색 결과 2차 조회 (line 199~200):
DISTINCT wr_parent 쿼리로 ID만 받은 뒤, 각 행마다 sql_fetch를 호출하여
검색 결과가 N건이면 추가로 N개의 쿼리가 발생. 단일 IN 쿼리로 모든 부모
글을 일괄 조회 후 $rows_to_process 배열에 원래 순서대로 정렬하여 공통
처리 루프에서 소비. 검색/비검색 분기에서 중복되던 row→list 변환 로직도
공통화.
효과 (공지 5개 + 검색 결과 20건 기준):
기존: 1 DISTINCT + 20 fetch + 5 notice fetch = 26 쿼리
개선: 1 DISTINCT + 1 IN(search) + 1 IN(notice) = 3 쿼리
부수 효과:
- 삭제된 공지/부모글에 대한 에러 처리 개선
(기존은 empty row를 get_list에 넘겨 잠재적 오류, 개선판은 자동 스킵)
- wr_id 정수화로 SQL injection 방지 계층 추가
2026-04-16 02:23:24 +00:00
thisgun
b8ffd99362
비밀글이 게시판 목록에서 내용, 썸네일이 노출되는 문제 수정#287
2023-10-19 11:17:16 +09:00
projectSylas
52f7eef288
공지글이 없을때 나오는 오류 Trying to access array offset on value of type null 수정
2021-12-29 11:37:29 +09:00
seeoya
a248f26085
게시판 : #96 목록 검색 결과에서 페이징 클래스 네이밍 수정 및 추가
2021-05-12 10:39:38 +09:00
thisgun
582d1a01f4
php8.0 버전 호환 코드 적용 및 PHP 끝 태그 삭제 일괄적용
2021-01-04 15:33:29 +09:00
thisgun
22aad37bfb
5.4 버전 내용 적용
2019-12-02 10:22:12 +09:00
thisgun
5b9b29fdfe
게시판 검색시 0 문자열로 검색할수 있도록 수정
2018-02-26 11:50:17 +09:00
chicpro
ee702ff641
SIR 도메인 변경
2016-02-19 11:16:11 +09:00
chicpro
f1c56fe70c
MySQLi 지원 추가
2015-10-12 14:12:45 +09:00
chicpro
846c4500f7
검색 때 게시글 카운트 속도 개선
2015-02-05 09:51:03 +09:00
chicpro
892c67bae5
게시글 정렬 기본값 지정
2014-12-08 09:54:49 +09:00
chicpro
fe35a8c782
SQL Injection 취약점 수정
2014-12-05 17:13:10 +09:00
chicpro
5cb4415032
이전 다음 검색 버튼 출력되지 않는 오류 수정
2014-09-03 11:16:06 +09:00
chicpro
bc6ec9a3d0
리스트 공지 출력 관련 코드 수정
2014-05-14 16:53:46 +09:00
chicpro
07176252c8
공지가 있을 때 게시글 글번호 오류 수정
2014-02-27 14:32:51 +09:00
chicpro
77680ff29f
분류 사용시 열린 분류 문구 초기화 되지 않는 오류 수정
2013-11-01 11:52:33 +09:00
gnuboard
b18b19c703
게시판 카테고리 선택후 선택삭제시 카테고리 풀리는 현상을 해결
2013-10-07 13:33:14 +09:00
gnuboard
1668ed095b
공지글인 경우는 해당글을 같은 페이지에서 다시 노출하지 않는다.
2013-10-07 11:17:30 +09:00
gnuboard
41d21074b5
그누보드5
2013-09-13 11:03:33 +09:00