apc_store не работает между запросами - PullRequest
7 голосов
/ 27 мая 2011
$bar = 'BAR';
apc_store('foo', $bar);
var_dump(apc_fetch('foo'));

В рамках одного запроса эта работа.

Теперь, если я попытаюсь сделать var_dump(apc_fetch('foo')); по другому запросу, он напечатает:

bool(false)

Любая помощь?

Я нахожусь на gentoo с PHP 5.2, APC-3.1.9

Вот что phpinfo () знает о APC:

APC Support enabled
Version 3.1.9
APC Debugging   Disabled
MMAP Support    Enabled
MMAP File Mask  no value
Locking type    pthread mutex Locks
Serialization Support   php
Revision    $Revision: 308812 $
Build Date  May 27 2011 13:14:20

Directive   Local Value Master Value
apc.cache_by_default    On  On
apc.canonicalize    On  On
apc.coredump_unmap  Off Off
apc.enable_cli  Off Off
apc.enabled On  On
apc.file_md5    Off Off
apc.file_update_protection  2   2
apc.filters no value    no value
apc.gc_ttl  3600    3600
apc.include_once_override   Off Off
apc.lazy_classes    Off Off
apc.lazy_functions  Off Off
apc.max_file_size   1M  1M
apc.mmap_file_mask  no value    no value
apc.num_files_hint  1000    1000
apc.preload_path    no value    no value
apc.report_autofilter   Off Off
apc.rfc1867 Off Off
apc.rfc1867_freq    0   0
apc.rfc1867_name    APC_UPLOAD_PROGRESS APC_UPLOAD_PROGRESS
apc.rfc1867_prefix  upload_ upload_
apc.rfc1867_ttl 3600    3600
apc.serializer  default default
apc.shm_segments    1   1
apc.shm_size    32M 32M
apc.slam_defense    On  On
apc.stat    On  On
apc.stat_ctime  Off Off
apc.ttl 0   0
apc.use_request_time    On  On
apc.user_entries_hint   4096    4096
apc.user_ttl    0   0
apc.write_lock  On  On

Если вам нужна другая информация, пожалуйста, скажите мне

Вот как я его установил: https://serverfault.com/questions/274261/failed-installing-apc

Я заметил одну вещь: в команде phpinfo 'Configure я не нашел apc

'. / Configure' '--disable-cli' '--Disable-отбрасывать-путь' 'Повреждают силы-CGI-редирект' 'Prefix = / USR / местные / php5' '--with-config-file-path = / usr / local / lib / php5' '--with-pear = / usr / share / php5' '--enable-exif' '--enable-ftp' '--enable-bcmath' '--enable-calendar' '--with-gd' '--enable-gd-native-ttf' '--with-freetype-dir' '--with-gettext' '--with-zlib-dir' '--with-imap' '--With-IMAP-SSL' '--With-PNG-DIR = / USR' '--With-JPEG-Dir = / USR' '--with-xpm-dir = / usr' '--with-openssl' '--with-kerberos' '--enable-sysvsem' '--enable-sysvshm' '--with-mcrypt' '--with-iconv' '--enable-mbstring = all' '--enable-mbregex' '--with-mysql = / usr' '--with-mysqli' '--with-curl' '--With-XSL'

Ответы [ 4 ]

6 голосов
/ 31 мая 2011

Возможно, вы используете PHP через CGI (вместо FastCGI, который вам следует использовать) - см. мой ответ на другой вопрос , почему APC не работает, если PHP работает через CGI.

0 голосов
/ 02 июня 2011
0 голосов
/ 31 мая 2011

Содержимое php.ini

apc.enabled="1"
apc.shm_segments="1"
apc.shm_size="128M"
apc.ttl="7200"
apc.user_ttl="7200"
apc.file_update_protection="3"
apc.cache_by_default="0"
apc.max_file_size="1M"
apc.stat="0"
apc.write_lock="1"
apc.report_autofilter="0"
apc.include_once_override="0"
apc.localcache="1"
apc.localcache.size="1024"
apc.coredump_unmap="0"
; Optional, Comment out them later on
apc.num_files_hint="5000"
apc.user_entries_hint="5000"
apc.gc_ttl="3600"
apc.stat_ctime="0"

Содержимое apctest.php

<?php
$bar = 'BAR';
apc_store('foo', $bar);
var_dump(apc_fetch('foo'));
?>

Результат apctest.php

string 'BAR' (length=3)

Содержимое apctest2.php

<?php
var_dump(apc_fetch('foo'));
?>

Результат apctest2.php

string 'BAR' (length=3)

apc.php отображается в разделе «Записи кэша пользователей»

User Entry Label    Hits    Size    Last accessed   Last modified   Created at  Timeout Deleted at
foo 4   656 31.05.2011 12:12:22 31.05.2011 12:05:33 31.05.2011 12:05:33 None    [Delete Now]

Версии программного обеспечения:

PHP Version 5.3.6
Server Version: Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8e-fips-rhel5 DAV/2 SVN/1.6.9 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 mod_fcgid/2.3.5 mod_perl/2.0.4 Perl/v5.8.8
OS: CENTOS 5.6 x86_64 standard
0 голосов
/ 27 мая 2011

Ваш ttl по умолчанию (apc.ttl) равен 0 секундам, что странно - попробуйте указать ttl (в секундах) при сохранении значения:

apc_store('foo', $bar, 60);
...