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)
30 lines
919 B
PHP
30 lines
919 B
PHP
<?php
|
|
include_once('./_common.php');
|
|
|
|
$subject = isset($_POST['subject']) ? strip_tags($_POST['subject']) : '';
|
|
$content = isset($_POST['content']) ? strip_tags($_POST['content']) : '';
|
|
|
|
//$filter = explode(",", strtolower(trim($config['cf_filter'])));
|
|
// strtolower 에 의한 한글 변형으로 아래 코드로 대체 (곱슬최씨님이 알려 주셨습니다.)
|
|
$filter = explode(",", trim($config['cf_filter']));
|
|
$filter_cnt = count($filter);
|
|
for ($i=0; $i<$filter_cnt; $i++) {
|
|
$str = $filter[$i];
|
|
|
|
// 제목 필터링 (찾으면 중지)
|
|
$subj = $cont = "";
|
|
$pos = stripos($subject, $str);
|
|
if ($pos !== false) {
|
|
$subj = $str;
|
|
break;
|
|
}
|
|
|
|
// 내용 필터링 (찾으면 중지)
|
|
$pos = stripos($content, $str);
|
|
if ($pos !== false) {
|
|
$cont = $str;
|
|
break;
|
|
}
|
|
}
|
|
|
|
die("{\"subject\":\"{$subj}\",\"content\":\"{$cont}\"}"); |