What is PHP APC Cache?
If you’ve been around PHP for a while, you’ve probably heard about APC, the Alternative PHP Cache. APC is an opcode cache that can significantly speed up your PHP applications, by caching both PHP code and user variables. Adding APC to an application usually results in improved application response times, reduced server load and happier users.
When dealing with Plesk web servers with multiple users and websites, APC PHP cache might be required in order to achieve reliable server performance. Step 1: Getting Started
The Alternative PHP Cache (APC) is a free, open, and robust framework for caching and optimizing PHP intermediate code. It’s an PECL extension which shares the packaging and distribution system with its sister, PEAR. In case you don’t have php-pear installed, run this command:
yum install php-pear
Step 2: APC PHP Dependencies
Next, let’s install any remaining dependencies which are required by PHP APC
yum install php-devel httpd-devel gcc
Step 3: Installing APC using the PECL command
pecl install apc
Step 3: Enable Alternative PHP Cache
Enable APC PHP cache in Apache’s configuration. By using command:
and add the following code if it's not already there:
; Enable apc extension module extension = apc.so ; Options for the APC module version >= 3.1.3 ; See http://www.php.net/manual/en/apc.configuration.php ; This can be set to enable the APC opcode cache ; WARNING: don't set this option if another opcode cache is enabled apc.enable_opcode_cache=0 ; This can be set to 0 to disable APC. apc.enabled=1 ; The size of each shared memory segment, with M/G suffixe apc.shm_size=128M ; The shared memory size reserved for strings, with M/G suffixe ; WARNING: only enable this buffer if you don't use Zend Opcache ;apc.shm_strings_buffer=0 ; A "hint" about the number of distinct source files that will be included or ; requested on your web server. Set to zero or omit if you are not sure; ;apc.num_files_hint=1000 ; Just like num_files_hint, a "hint" about the number of distinct user cache ; variables to store. Set to zero or omit if you are not sure; ;apc.user_entries_hint=4096 ; The number of seconds a cache entry is allowed to idle in a slot in case this ; cache entry slot is needed by another entry. ;apc.ttl=0 ; use the SAPI request start time for TTL ;apc.use_request_time=1 ; The number of seconds a user cache entry is allowed to idle in a slot in case ; this cache entry slot is needed by another entry. ;apc.user_ttl=0 ; The number of seconds that a cache entry may remain on the garbage-collection list. ;apc.gc_ttl=3600 ; On by default, but can be set to off and used in conjunction with positive ; apc.filters so that files are only cached if matched by a positive filter. ;apc.cache_by_default=1 ; A comma-separated list of POSIX extended regular expressions. ;apc.filters= ; The mktemp-style file_mask to pass to the mmap module apc.mmap_file_mask=/tmp/apc.XXXXXX ; This file_update_protection setting puts a delay on caching brand new files. ;apc.file_update_protection=2 ; Setting this enables APC for the CLI version of PHP (Mostly for testing and debugging). ;apc.enable_cli=0 ; Prevents large files from being cached ;apc.max_file_size=1M ; Whether to stat the main script file and the fullpath includes. ;apc.stat=1 ; Vertification with ctime will avoid problems caused by programs such as svn or rsync by making ; sure inodes have not changed since the last stat. APC will normally only check mtime. ;apc.stat_ctime=0 ; If on, then relative paths are canonicalized in no-stat mode. ; If set, then files included via stream wrappers can not be cached ; as realpath() does not support stream wrappers. ;apc.canonicalize=1 ; With write_lock enabled, only one process at a time will try to compile an ; uncached script while the other processes will run uncached ;apc.write_lock=1 ; Logs any scripts that were automatically excluded from being cached due to early/late binding issues. ;apc.report_autofilter=0 ; RFC1867 File Upload Progress hook handler ;apc.rfc1867=0 ;apc.rfc1867_prefix =upload_ ;apc.rfc1867_name=APC_UPLOAD_PROGRESS ;apc.rfc1867_freq=0 ;apc.rfc1867_ttl=3600 ; Enables APC handling of signals, such as SIGSEGV, that write core files when signaled. ; APC will attempt to unmap the shared memory segment in order to exclude it from the core file ;apc.coredump_unmap=0 ; Records a md5 hash of files. ;apc.file_md5=0 ; not documented ;apc.preload_path=
save and quit vi with
esc wq enter
Step 4: Restart Apache, nginx and php-fpm
/etc/init.d/httpd restart /etc/init.d/nginx restart /etc/init.d/php-fpm restart
You can edit APC config file to change settings using this command:
Remember to restart your web services to apply any changes made.
That’s it. Enjoy!