라라벨 환경설정 파일 (env/config)

php artisan config:cache를 사용한 config()와 env()를 직접 사용하는 것의 장단점을 비교해보겠습니다.

1. php artisan config:cache 사용하기

php artisan config:cache를 사용했을때

config/*.php 파일들을 env()함수로 읽어들인다. 그리고 .env파일의 내용을 불러오게 된다

사용시에는 config()로 사용하게된다

캐시에 bootstrap/cache안에 저장해놓기때문에 매번 사용시 저장된 녀석을 사용하므로 성능적으로유리

config:clear 후 config:cache를 하지않으면 변경사항이 적용되지 않음

장점:

성능 향상: config:cache는 설정 파일을 캐시로 저장하여 설정 정보를 빠르게 로드할 수 있게 합니다. 파일 읽기와 파싱 과정을 생략하므로 애플리케이션 시작 시간과 설정 로딩 시간을 줄일 수 있습니다.

캐시 기능 활용: Laravel의 캐시 기능을 사용하여 설정 파일의 변경 사항을 추적할 수 있습니다. 변경된 설정 파일이 있을 경우, config:clear를 사용하여 캐시를 제거한 후 config:cache를 다시 실행하여 변경 사항을 적용할 수 있습니다.

단점:

설정 변경 사항 반영 어려움: config:cache를 사용하면 설정 파일의 변경 사항이 즉시 반영되지 않습니다. 설정을 변경한 후에는 config:clear를 실행하여 캐시를 제거한 후에 다시 config:cache를 실행해야 합니다.

유연성 감소: config:cache를 사용하면 설정 파일의 내용이 캐시 파일에 저장됩니다. 따라서 동적으로 설정 파일을 변경해야 하는 경우, 캐시를 제거하고 다시 생성해야 하는 불편함이 있을 수 있습니다.

2.env() 직접 사용하기

매번 사용할때마다 .env파일을 읽어들이므로 성능에 좋지않음

그리고 어플리케이션을 재가동(php artisan serve)하지 않으면 변경사항이 저장되지 않음

그러므로 config()보다 좋지않음

또한 php artisan config:cache명령사용시 env()만 적혀있는 애들은 읽지않는다

장점:

유연한 설정 변경: .env 파일을 사용하여 환경 변수를 관리하면 설정 변경을 쉽게 할 수 있습니다. 다양한 환경에서 다른 설정 값을 사용할 수 있습니다.

코드 가독성: env()를 사용하여 설정 값을 가져오면 코드에서 바로 확인할 수 있습니다. 환경 변수의 값을 직접 사용하는 것이 가독성에 도움을 줄 수 있습니다.

단점:

성능 영향: env() 함수는 매번 .env 파일을 읽어오기 때문에 파일 읽기와 파싱 오버헤드가 있을 수 있습니다. 환경 변수를 자주 사용하는 경우 성능 저하가 발생할 수 있습니다.

캐싱 불가능: env() 함수는 캐시 기능을 사용할 수 없습니다. 따라서 파일 읽기와 파싱 작업을 매번 수행해야 하며, 설정 파일의 변경 사항이 즉시 반영되지 않습니다.

요약하자면, php artisan config:cache는 애플리케이션의 성능을 향상시키는 장점이 있지만, 설정 변경 사항을 반영하는 데에는 캐시를 제거하고 다시 생성해야 하는 번거로움이 있습니다. 반면에 env()를 직접 사용하는 것은 유연한 설정 변경과 코드 가독성을 제공하지만, 성능 영향과 설정 변경 사항의 실시간 반영 어려움이 있을 수 있습니다. 선택은 애플리케이션의 요구사항과 개발자의 우선순위에 따라 달라집니다.

3.사용법

php artisan config:clear후에 php artisan config:config하는 방식으로 사용해야한다

왜냐하면 환경설정을 변경후 php artisan config:config를 사용할 경우 기존 캐시가 남아있어서 변경사항이 적용되지 않기때문이다

4.재정리..(2023/07/30)

1.env() 함수는 .env파일의 내용을 직접 읽어온다

2.그러나 매번 env()함수를 이용해서 직접 읽어오기 때문에 효율이 좋지않다

3.그래서 위의 이미지와 같이 app.php에 env('TRANSLATOR_CLIENT_ID')한 내용을 config의 translator_client_id에 저장한다

4.translator_client_id에 저장한 내용은 config('app.translator_client_id')로 호출할수있다 // config/app.php 파일안에 있기때문에 app.translator_client_id가 된다

5.php artisan config:cache명령어를 사용하면 app.php의 내용이 전부 캐싱된다

6.위에서 캐싱된 내용은 bootstrap/cache/config.php에서 확인 가능하다

7.config()를 사용하므로 매번 env()를 사용해서 접근하는게 아니라 저장된 캐싱된 데이터에 접근하므로 효율이 높아진다


참고

https://hiroto-k.hatenablog.com/entry/2018/03/28/213000

https://qiita.com/mitashun/items/96caaf1c1f36eada20f2

https://biz.addisteria.com/env_config/

Jul 5, 2023 Views 773