php-apcu (CGI/FastCGI) apc_fetch всегда возвращает false

При использовании расширения php-apcu ( https://github.com/krakjoe/apcu) (не apc) в среде php CGI сохраняются данные изapc_store пусты

У кого-нибудь есть опыт, как решить эту проблему?

Пример PHP-файла: test-apc.php

<?php
$k = 'test';
if(isset($_GET['get'])) {
    $result = apc_fetch($k);
    echo "Read entry '$k': $result";
} else if(isset($_GET['clear'])) {
    echo "Clear entry '$k'";
    apc_clear_cache('user');
} else {
    apc_store($k, "HelloWord");
    echo "Write entry '$k' set";
}
print_r(apc_cache_info('user'));
?>

Действия по воспроизведению:

  1. открыто http://server/test-apc.php звонить apc_store
  2. открыто http://server/test-apc.php?get получать сохраненные данные, используя apc_fetch

Кстати: apc_cache_info ('user') показывает это правильно с первым запросом, второй пуст

Соответствующие пакеты (ОС: Debian 3.2.63):

  • Apache 2.2.22 (mpm-prefork, suexec-custom, оболочка)
  • php5.5 как CGI
  • php5-apcu 4.0.7
  • (и зависимости)

1 ответ

Решение

Модуль php-apcu не полностью совместим с CGI/fcgid.

Возможная причина: CGI / fcgid выполняет интерпретатор php как новый экземпляр при каждом запросе HTTP. Таким образом, apcu / apc не может восстановить пользовательские кеши.

Модуль mod-fastcgi (несвободный пакет для Debian) вместе с php5-fpm может помочь. Он использует другую технику для управления процессами.


http://php-fpm.org/wiki/ (внизу - 2015-09-02)

Другие вопросы по тегам