У меня есть несколько тестовых пакетов zend-сервера CE (php5.3), один на Mac 10.8.2, один на экземпляре Linux EC2, оба из которых используют реализацию APC по умолчанию (кэш данных zend), которая поставляется вместе с установкой.
На обеих машинах я звоню:
apc_store("Installation:1234:lastActivity", "x", 120);
Затем я вызываю apc_fetch для этого ключа.
На Mac работает apc_fetch.
В Linux apc_fetch возвращает FALSE и терпит неудачу.
Теперь о странных вещах в ящике Linux, несколько тестов, которые я сделал:
1. Если я удаляю последний символ в ключе (y), работает apc_fetch.
2. Если я изменил двоеточие (:) для косой черты (/), работает apc_fetch.
Любые идеи, что происходит? благодаря…
Сервер Zend фактически не использует APC, вместо этого использует собственную реализацию – «Zend Data Cache». Между ними, по-видимому, есть некоторые тонкие различия.
Одна вещь, которую имеет ZDC, это «пространства имен», где вы префикс ключа с помощью «{name} ::», а затем вы можете удалить все ключи, которые начинаются с этого префикса.
Может быть, есть ошибка, когда в строке есть два (не последовательных) двоеточия. Тем временем достаточно легко просто настроить структуру ключа, чтобы избежать проблемы.