При установленном APC XDebug все еще показывает, что требуется несколько МБ памяти - PullRequest
0 голосов
/ 28 марта 2012

По сути, теперь, когда APC установлен, я предполагал, что трассировка памяти покажет, что она потребляет меньше ресурсов при выполнении (так как он используется совместно).Однако при выполнении трассировки с использованием XDebug на одной и той же странице (до и после, с несколькими перезагрузками) это показывает, что использование памяти остается таким же, как было до этого.

Я подтвердил, что APC работаетпутем успешного вывода apc_cache_info ().

Вот моя конфигурация APC в PHP.ini

[APC]
; This can be set to 0 to disable APC.
apc.enabled=1
; The number of shared memory segments to allocate for the compiler cache.
apc.shm_segments=1
; The size of each shared memory segment, with M/G suffixe
apc.shm_size=64M
; 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're not sure;
apc.num_files_hint=1024
; Just like num_files_hint, a "hint" about the number of distinct user cache
; variables to store.  Set to zero or omit if you're 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=7200
; 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=7200
; 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=c:/apc_cache/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 havn't changed since the last stat. APC will normally only check mtime.
apc.stat_ctime=0
; Whether to canonicalize paths in stat=0 mode or fall back to stat behaviour
apc.canonicalize=0
; 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
;This setting is deprecated, and replaced with apc.write_lock, so let's set it to zero.
apc.slam_defense=0

Edit # 1

Я наконец-то обошелдля двойной проверки ...

apc_cache_info () покажет:

DEBUG: Array
(
    [num_slots] => 2048
    [ttl] => 7200
    [num_hits] => 4313
    [num_misses] => 124
    [start_time] => 1334152023
    [expunges] => 0
    [mem_size] => 21653480
    [num_entries] => 119
    [num_inserts] => 124
    [file_upload_progress] => 1
    [memory_type] => IPC shared
    [locking_type] => file
    [cache_list] => Array
        (
            [0] => Array
                (
                    [filename] => ...

phpinfo () покажет:

apc

APC Support enabled
Version 3.0.15-dev
MMAP Support    Disabled
Locking type    File Locks
Revision    $Revision: 3.145 $
Build Date  May 31 2007 09:39:25

Можно ли отправлять заголовки, которые бы изменилиповедение БТР?(т.е. чтобы всегда получать свежую копию веб-страницы?)

Edit # 2

Я даже увеличил настройку apc.max_file_size до 5M, просто чтобы увидетьесли это было проблемой.То же самое.Требуется по-прежнему использовать тот же объем оперативной памяти между перезагрузками.

Я также заметил, что [num_hits] для файлов действительно увеличивается.

Edit # 3

Из моего файла трассировки:

0.0740    6152208  +492816     -> require(E:\my_require.php) E:\main.php:60

Разве дельта памяти не должна показывать значительно меньшее значение при последующих проходах, после того как она была кэширована?

1 Ответ

3 голосов
/ 20 апреля 2012

Редактировать # 3

Из моего файла трассировки:

0,0740 6152208 +492816 -> требуется (E: \ my_require.php) E: \ main.php: 60

Если дельта памяти не показывает значительно меньшее значение на последующие проходы, после того как он был кэширован?

да, это должно
Также я подумал, что использование механизма кэширования сделает его так, чтобы он кэшировал и разделял память, ограничивая объем памяти, используемый для сценариев

...