Wednesday, May 9, 2012

Why all my files are not cached with apc op code?


I'm using APC (3.1.9) and Zend Framework,
however, only a bunch of file are being cached
(something like 10 / 400).

Do you have any ideas? I'm using the factory options
on a debian installation.


EDIT: It looks like the only file which are opcached are
 the one I manually call with  
require '';
however the ones which are loaded by
my autoloader are not.
Any ideas?

 
 
 
Runtime Settings




apc.cache_by_default    1

apc.canonicalize    1

apc.coredump_unmap  0

apc.enable_cli  0

apc.enabled 1

apc.file_md5    0

apc.file_update_protection  2

apc.filters 

apc.gc_ttl  3600

apc.include_once_override   0

apc.lazy_classes    0

apc.lazy_functions  0

apc.max_file_size   1M

apc.mmap_file_mask  

apc.num_files_hint  1000

apc.preload_path    

apc.report_autofilter   1

apc.rfc1867 0

apc.rfc1867_freq    0

apc.rfc1867_name    APC_UPLOAD_PROGRESS

apc.rfc1867_prefix  upload_

apc.rfc1867_ttl 3600

apc.serializer  default

apc.shm_segments    1

apc.shm_size    32M

apc.slam_defense    1

apc.stat    1

apc.stat_ctime  0

apc.ttl 0

apc.use_request_time    1

apc.user_entries_hint   4096

apc.user_ttl    0

apc.write_lock  1





here is apc.php screenshots
apc.php

The files that are getting opcached
php code

And the index.php (ZF) where I require files and register autoloader within Zend_Loader_Autoloader.


opcached files

Source: Tips4all

2 comments:

  1. For some reasons apc.cache_by_default was set to OFF, an my files were not getting cached correctly, which is logical given this config, however, I still don't understand why those I manually required was actually cached.

    ReplyDelete
  2. Probably one of the biggest downside to autoloading is that op cache doesn't cache autoloaded files as one would hope (something about autoload being runtime vs. include/require being compile time. Or not. I dont claim to understand it.). Read more here.

    While I never tried, I wonder if manually adding your autoloaded file to the cache by calling apc_compile_file() in the autoloader would, effectively, solve this issue?

    ReplyDelete