공부/PHP

[PHP] APCu 프로세스 간 자원 공유

2020. 7. 16. 19:41

APCu는 APC에서 opcode 캐시 부분만 제거된 모듈로 데이터를 공유 메모리에 저장하여 프로세스 간 데이터를 공유할 수 있는 기능을 제공한다.

APC란

 

Alternative PHP Cache (APC)

정의 Alternative PHP Cache (APC)는 PHP를 위한 무료 opcode 캐시입니다. 그것의 목표는 PHP 중간 코드를 캐싱하고 최적화하기 위한 자유롭고 개방적이며 견고한 프레임 워크를 제공하는 것입니다. php manual

unhosted.tistory.com

멀티 프로세스를 동작하는 php특성상 프로세스가 종료될 때 자원이 해제되어 자원을 공유하기 위해서는 DB형태로 저장해야 된다고 생각하였으나, APCu를 이용하여 프로세스 간 자원 공유를 사용할 수 있다는 것을 알게 되었다.

실제로 작동 시켜본 결과 별게 아닐 수 있지만 이전까지는 경험해본 적 없던 것에 매우 충격을 받았고, 그 과정 및 결과를 공유하고자 한다.

 

php 오픈소스에서도 사용되는 것을 보았는데 파일 자체를 캐시에서 읽어오고 파일 자체를 저장하는 데 사용되었다.

opcache는 파일을 읽고 opcode로 컴파일하는 비용이 절약되기 때문에 opcache가 더 효율적으로 예상된다.

 

1. 모듈 설치

설치는 아래의 링크를 참조하였다.

모듈 설치 그리고 ini파일 설정을 해야한다.

https://guides.wp-bullet.com/install-apcu-object-cache-for-php7-for-wordpress-ubuntu-16-04/

 

Install APCu Object Cache for PHP7 for WordPress on Ubuntu 16.04 •

Install APCu Object Cache for PHP7 for WordPress on Ubuntu 16.04 to speed up your site in the backend and frontend, works for WooCommerce as well.

guides.wp-bullet.com

2. 사용

방법은 매우 간단하다. 

<?php  
    apcu_store('data', $data); // 데이터를 저장하고
?> 
// 다른 프로세스
<?php 
    $data = apcu_fetch('data');	// 데이터를 가져와서 사용
?> 

캐시 데이터 저장(추가), 조회, 삭제, 메모리 정보 조회 등 기능들이 있고 아래 메뉴얼에서 확인 가능하다.

https://www.php.net/manual/en/ref.apcu.php

 

PHP: APCu Functions - Manual

APCu Functions Table of Contents There are no user contributed notes for this page.

www.php.net

 

3. 소감

새롭고 신기하다. 어떻게 활용해야 할지 고민이 된다.

잘 사용하면 좋은 성능을 낼 수 있을 것이라 기대하지만, 반대의 경우엔 이유 없이 메모리 문제가 생기는 일이 발생할 것 같다.

이상.

반응형