PHP에서 데이터를 파일로 캐싱(Caching)하기

성능좋은 인프라와 빠른 속도의 DB Query로 아무리 구성하고자 노력한다 하더라도, 캐싱은 여전히 웹프로그램의 성능을 향상시키기 위한 가장 고전적이면서 가장 가성비 높은 해법입니다. PHP에서는 APC와 같은 모듈을 활용하는 것이 일반적이지만, 특정 웹페이지에서 사용하는 데이터를 핀포인트로 캐싱할 때는 이를 직접 구현해보는 것도 선택가능한 대안입니다.

이번 포스팅에서는 일반적으로 PHP에서 변수에 담긴 데이터를 파일로 캐싱하는 방법을 다양한 예제코드를 통해 설명합니다. 이 과정에서 실무에 적용가능한 수준의 예제코드를 몇 가지 선보이고자 합니다. 마지막 단계에서는 PHP의 파일시스템 함수들을 조합하여, 충분한 시간이 지나면 캐싱이 만료되는 TTL(Time to Live)의 구현방법을 모색해볼 것입니다.

Continue reading

PHP에서 배열이 색인 배열인지 연관 배열인지 구별하기

흔히 배열은 색인 배열(Indexed Array)과 연관 배열(Associative Array)로 구분됩니다. 색인 배열은 키(key)가 0부터 시작하여 순차적으로 증가하는 정수인 배열을 의미합니다. 이 때문에 색인 배열은 순차 배열(Sequential Array)이라고 부르기도 합니다. 그 외의 모든 배열은 연관 배열로 분류할 수 있습니다.

사실 PHP는 내부적으로 색인 배열과 연관 배열을 구분하지 않습니다. 이 점은 PHP Manual의 Arrays 항목에서도 언급하고 있는 내용입니다.

PHP arrays can contain integer and string keys at the same time as PHP does not distinguish between indexed and associative arrays.

그럼에도 종종 어떤 배열이 색인 배열과 같은 형태인지 연관 배열인지를 알아내야 하는 경우가 있습니다. 웹 상에서 코드서칭을 해보면 무척 다양한 해법들을 찾아볼 수 있는데요. 다소 복잡한 방법이 있는가하면, 무릎을 탁치게 하는 방법들도 존재합니다. 금번 포스팅에서는 그 중에 몇 가지를 간추려 소개하고자 합니다.

Continue reading