개발 지식

개발 지식

PHP 실무에서 쓸 수 있는 PHP 성능 최적화 체크리스트

페이지 정보

profile_image
영삼이
0건 190회 25-03-28 23:10

본문

✅ 실무에서 쓸 수 있는 PHP 성능 최적화 체크리스트

PHP 프로젝트의 성능은 코드 품질뿐 아니라 설정, 아키텍처, 실행 방식에 따라 크게 달라집니다. 이 글에서는 실무에서 바로 적용할 수 있는 PHP 성능 최적화 항목을 정리합니다.


🧠 1. OPcache 활성화

[code]
; php.ini 설정
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.validate_timestamps=0
[/code]
  • 코드 캐싱을 통해 실행 속도 획기적으로 향상

  • 프로덕션에서는 validate_timestamps=0 필수


⚙️ 2. 불필요한 반복 로직 제거

[code=php]
// 나쁜 예
for ($i = 0; $i < count($arr); $i++) {
    ...
}

// 좋은 예
$length = count($arr);
for ($i = 0; $i < $length; $i++) {
    ...
}
[/code]
  • count()는 루프마다 호출되므로 변수에 캐싱

  • 큰 배열에서 효과 큼


🚀 3. DB 쿼리 최적화

  • 불필요한 N+1 쿼리 제거

  • LIMIT, INDEX, WHERE 조건 철저하게 사용

  • 결과 캐싱(파일/Redis 등) 적극 활용

[code=php]
// 비효율적인 N+1
foreach ($posts as $post) {
    $author = $db->getAuthor($post->author_id);
}
[/code]

---

### 📦 4. Composer 오토로딩 최적화

```bash
composer dump-autoload -o
  • PSR-4 오토로딩을 클래스 맵 방식으로 변경

  • 프로덕션 환경 필수


🔁 5. 로직 캐싱

[code=php]
$cacheKey = 'user_list';

if ($cache->has($cacheKey)) {
    $users = $cache->get($cacheKey);
} else {
    $users = $db->getAllUsers();
    $cache->set($cacheKey, $users, 300); // 5분 캐시
}
[/code]
  • API 응답, 뷰 데이터, DB 결과 등 캐싱 고려

  • APCu, Redis, 파일 등 다양한 스토리지 활용 가능


🧹 6. 불필요한 include/require 제거

  • 클래스 자동 로딩을 쓰면서 require 남발은 낭비

  • 필요하면 Composer classmap 등록


⏱ 7. 함수 성능 고려

  • echo vs print: echo가 약간 더 빠름

  • isset() vs array_key_exists(): isset()이 빠르지만 null 체크에는 주의


📊 8. 성능 측정 도구 사용

  • Xdebug + Webgrind

  • Blackfire, Tideways

  • microtime(true) 으로 구간 측정

[code=php]
$start = microtime(true);
// 실행 코드
echo round(microtime(true) - $start, 4) . " sec";
[/code]

✅ 최종 체크리스트 요약

  • OPcache 활성화

  • 쿼리 최적화 + 캐싱

  • 오토로딩 최적화

  • 루프 내부 연산 최소화

  • 응답 캐싱 전략 구축

  • 측정 → 병목 확인 → 개선 반복


댓글목록

등록된 댓글이 없습니다.