배포
최적화
CodeIgniter 애플리케이션을 운영 환경에 배포하기 전에 애플리케이션을 더 효율적으로 실행하기 위해 할 수 있는 몇 가지 작업이 있습니다.
이 섹션에서는 CodeIgniter가 제공하는 최적화 기능에 대해 설명합니다.
spark optimize
Added in version 4.5.0.
spark optimize 명령은 다음과 같은 최적화를 수행합니다:
Config 캐싱활성화
경고
워커 모드에서 앱을 실행할 때는 spark optimize를 사용하지 마세요.
Composer 최적화
개발 패키지 제거
배포할 때 다음 명령을 실행하는 것을 잊지 마세요:
composer install --no-dev
위의 명령은 운영 환경에서 필요하지 않은 개발 전용 Composer 패키지를 제거합니다. 이를 통해 vendor 폴더 크기를 크게 줄일 수 있습니다.
검색할 패키지 지정
Composer 패키지 자동 검색(Auto-Discovery)이 활성화된 경우, 필요할 때 모든 Composer 패키지가 스캔됩니다. 하지만 CodeIgniter 패키지가 아닌 패키지를 스캔할 필요가 없으므로, 스캔할 패키지를 지정하면 불필요한 스캔을 방지할 수 있습니다.
Composer 패키지 지정를 참조하세요.
Config 캐싱
중요
한 번 캐시되면 설정 파일이나 .env가 변경되더라도 캐시가 삭제될 때까지 설정 값은 변경되지 않습니다.
Config 객체를 캐싱하면 성능이 향상될 수 있습니다. 단, Config 값을 변경할 때는 캐시를 수동으로 삭제해야 합니다.
Config Caching을 참조하세요.
FileLocator 캐싱
FileLocator가 찾은 파일 경로를 캐싱하면 성능이 향상될 수 있습니다. 단, 파일 경로를 추가/삭제/변경할 때는 캐시를 수동으로 삭제해야 합니다.
FileLocator 캐싱을 참조하세요.
PHP 프리로딩
PHP 프리로딩을 사용하면 서버 시작 시 함수와 클래스 같은 필수 파일을 메모리에 로드하도록 지시할 수 있습니다. 이를 통해 이러한 요소들이 모든 요청에 대해 즉시 사용 가능해지고, 일반적인 로딩 과정을 건너뛰어 애플리케이션 성능을 향상시킵니다. 다만 메모리 사용량이 증가하며, 변경 사항을 적용하려면 PHP 엔진을 재시작해야 합니다.
요구 사항
프리로딩을 사용하려면 전용 PHP 핸들러가 하나 필요합니다. 일반적으로 웹 서버는 하나의 PHP 핸들러를 사용하도록 구성되므로 하나의 앱에는 전용 웹 서버가 필요합니다. 하나의 웹 서버에서 여러 앱에 프리로딩을 사용하려면 각 가상 호스트가 하나의 PHP 핸들러(예: 여러 PHP-FPM)를 사용하도록 서버를 구성하세요. 프리로딩은 opcache.preload에 지정된 파일을 읽어 관련 정의를 메모리에 유지합니다.
참고
하나의 CodeIgniter4 코어로 여러 앱을 처리하려면 하나의 CodeIgniter 설치로 여러 애플리케이션 실행을 참조하세요.
설정
PHP에서 INI 설정을 분리한 경우 php.ini 또는 xx-opcache.ini를 열고 opcache.preload=/path/to/preload.php와 opcache.preload_user=myuser를 설정하는 것을 권장합니다.
참고
myuser는 웹 서버에서 실행 중인 사용자입니다. 분리된 INI 설정의 위치를 찾으려면 php --ini를 실행하거나 phpinfo() 파일을 열어 Additional .ini files parsed를 검색하세요.
appstarter 설치를 사용하고 있는지 확인하세요. 수동 설치를 사용하는 경우 include 경로의 디렉터리를 변경해야 합니다.
<?php
// ...
class preload
{
/**
* @var array Paths to preload.
*/
private array $paths = [
[
'include' => __DIR__ . '/system', // <== change this line to where CI is installed
// ...
],
];
// ...
}
// ...